Показать сообщение отдельно
  #2 (permalink)  
Старый 21.11.2011, 15:53
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Потому, что в этой скобке хранится последнее найденное совпадение.
Грубо говоря - (\.\d)* находит - ".4", и добавляет его в скобку (\d+(\.\d)*), потом находит ".5" (так как установлено повторение именно скобки) и добавляет его снова во внешнюю скобку. Потом точно так же с ".1" и так как это последнее значение найденное этой скобкой оно и сохраняется. Сделайте так, и увидите разницу:
str = "For more information, see Chapter 3.4.5.1";
re = /chapter (\d+((\.\d)*))/i;
found = str.match(re);
alert(found);
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием