Показать сообщение отдельно
  #1 (permalink)  
Старый 23.11.2011, 13:59
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

Регулярные выражения. Разница, если String и RegExp методы
Есть такой пример в учебнике:

var reg = /[-()\.^]/g;

Первый случай. С методом match():
var str = "f.(g)-^1".match(reg);
alert(str);    //  .,(,),-,^

Выводит результат полностью. Формирует массив для всех совпадений.

Второй случай. С методом exec(). Чтобы увидеть все совпадения, нужно перечислять по очереди:
var a = re.exec("f(g)-.^1");
var b = re.exec("f(g)-.^1");
var c = re.exec("f(g)-.^1");
alert(a);   // (
alert(b);   // )
alert(c);   // -

и т.д. И в массив заносит только ОДИН результат - текущей проверки.

Но в справочнике указано, что exec() "формирует массив результатОВ или null". Не могу понять, где ошибка. Я проверил и у меня exec() НЕ формирует массив результатов. Формирует массив, но с ОДНИМ элементом. А не всеми, как match().
Вопрос, я неправильно вызываю? exec() может формировать массив со всеми результатами? или в справочнике все же ошибка?
Ответить с цитированием