Выполняет поиск совпадений в указанной строке. Возвращает массив результатов или null
Если вы хотите просто проверить, есть ли совпадения, используйте для этого метод test или String#search.
Метод exec при совпадении возвращает массив и обновляет свойства объекта regexp. Если совпадений нет - exec возвращает null.
Если указан флаг "g", то повторный вызов exec будет давать следующее совпадение.
regexp = /a+(b+(c+))/g
str = "abc aabbcc"
result1 = regexp.exec(str)
result2 = regexp.exec(str)
- result1
- Вложенный массив совпадений ["abc", "bc", "c"]
- regexp.lastIndex после result1
- 3
- result2
- Вложенный массив совпадений ["aabbcc", "bbcc", "cc"]
- regexp.lastIndex после result2
- 10
Это происходит за счет автоматического обновления при выполнении exec индекса конца последнего поиска lastIndex. Следующий поиск начинается от lastIndex.
Например, следующий скрипт выдает все совпадения:
var myRe = /ab*/g;
var str = "abbcdefabh";
var myArray;
while ((myArray = myRe.exec(str)) != null)
{
var msg = "Нашел " + myArray[0] + ". ";
msg += "Следующий поиск начнется с " + myRe.lastIndex;
document.write(msg);
}
Он выведет текст:
Нашел abb. Следующий поиск начнется с 3
Нашел ab. Следующий поиск начнется с 9
Вы можете вызвать exec при неявном определении объекта RegExp:
var matches = /(hello \S+)/.exec('This is a hello world!');
alert(matches[1]);
а что если .exec() выдает ошику
данный метод не поддерживается ?
Сравните примеры в хелпе с вашим кодом. Я думаю у вас регулярка в кавычках, поэтому и не работает. Мой пример:
var reg = /яхту/i;
var ex = reg.exec('Хуй на руль и поехали на ваську смотреть на яхту Обрамовича!');
document.writeln(ex);
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.