Регулярные выражения. Разница, если 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() может формировать массив со всеми результатами? или в справочнике все же ошибка? |
Цитата:
alert(/H(el)/.exec("Hello").join("\n"));
// Первый элемент - вся найденная подстрока. Второй элемент - скобка.
|
| Часовой пояс GMT +3, время: 03:40. |