Javascript.RU

exec

Синтаксис

var result1 = regexp.exec(str)
var result2 = regexp.exec(str)

Аргументы

str
текст, в котором искать

Описание, примеры

Выполняет поиск совпадений в указанной строке. Возвращает массив результатов или 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]);

Автор: Гость (не зарегистрирован), дата: 26 ноября, 2009 - 16:30
#permalink

а что если .exec() выдает ошику
данный метод не поддерживается ?


Автор: Вазелин (не зарегистрирован), дата: 6 мая, 2010 - 10:46
#permalink

Сравните примеры в хелпе с вашим кодом. Я думаю у вас регулярка в кавычках, поэтому и не работает. Мой пример:

var reg = /яхту/i;
var ex = reg.exec('Хуй на руль и поехали на ваську смотреть на яхту Обрамовича!');
document.writeln(ex);


Автор: Гость (не зарегистрирован), дата: 7 апреля, 2011 - 20:36
#permalink

Господа и дамы, помогите пожалуйста :
Есть строка q23123123 bababa q23123123

Как мне выделить строку bababa

я пытаюсь вот так:
s1">\s*\S*\w*\W*<\/str>

но мне возвращается ">bababa
возможно ли выделить только bababa

Использовать () $1 ?


Автор: кул (не зарегистрирован), дата: 9 апреля, 2011 - 02:59
#permalink

а чем \[a-b]+ не устраивает? если речь о регекспе идет


Автор: iyntx, дата: 27 января, 2012 - 18:54
#permalink

хм, если известны эти части "q23123123".. я бы сделал вот так:

var str = "q23123123 bababa q23123123",remove = /(q23123123)/;
for(i in (lala = remove.exec(str)))
{
    str = str.replace(remove,'')
}
alert(str);

работает
других способов сходу придумать не могу к сожалению с этим способом пробелы по краям остались...


Автор: Гиорги (не зарегистрирован), дата: 12 июня, 2012 - 00:34
#permalink
<script>
var str="q23123123 bababa q23123123",
result=str.match(/\bbababa\b/g);
alert(result);
<script>

Автор: Гость (не зарегистрирован), дата: 14 марта, 2016 - 15:16
#permalink

pattern = /\b[a-z]+\b/gi;


Автор: Вопрошатель (не зарегистрирован), дата: 7 июня, 2011 - 02:51
#permalink

Кстати,что за "незапоминающие скобки"?
У меня все что находится между скобок присутствует в результате.


Автор: mister_maxim, дата: 9 июня, 2011 - 19:15
#permalink

(?=что-то)
(?!что-то)
(?:что-то)
это имеется ввиду не запоминающие скобки.


Автор: Leax, дата: 5 июля, 2011 - 17:16
#permalink

У меня тоже незапоминающие скобки не работают: выражение находится нормально, но в результат всё-равно включается то что было внутри этих скобок- хотя не должно (FF 3.6.16)


Автор: mister_maxim, дата: 9 июня, 2011 - 19:18
#permalink

Илья Кантор, кажется вы забыли написать что возвращаемое значение - не просто массив, а с очень важным свойством index указывающего позицию вхождения.


Автор: Гость (не зарегистрирован), дата: 15 февраля, 2013 - 17:40
#permalink

Следует отметить, что myArray[1] если его нет в ie7,8 равен пустой строке, а в остальных браузерах равен undefined!!!


Автор: Гость (не зарегистрирован), дата: 26 апреля, 2013 - 04:02
#permalink

В статье написано regexp.lastIndex после result2 10
Почему 10? Не понимаю. 6 может?


Автор: Гость (не зарегистрирован), дата: 9 октября, 2013 - 14:55
#permalink

Почему у меня код криво работает:

var str = 'ааабрррвыывфаааагг1р5еу0';
var matches = /а*/g.exec(str);
alert(matches);

По идее, должен выводить все совпадения, а у меня только первое совпадение - aaa, даже указан флаг глобального поиска.


Автор: Гость (не зарегистрирован), дата: 12 января, 2014 - 21:00
#permalink

Почему у меня код криво работает:

var str = 'ааабрррвыывфаааагг1р5еу0';
var matches = /а*/g.exec(str);
alert(matches);
По идее, должен выводить все совпадения, а у меня только первое совпадение - aaa, даже указан флаг глобального поиска.

Знаете, у меня та же проблема. Скорее всего, это из-за того, что мы ставим регулярное выражение в открытом виде, а надо, видимо, вначале в переменную внести, а потом только её использовать.


Автор: Гость (не зарегистрирован), дата: 6 апреля, 2014 - 16:15
#permalink

скорее потому что вы дураки, не умеющие читать

"Если указан флаг "g", то повторный вызов exec будет давать следующее совпадение."

написано В ЭТОЙ статье


Автор: Гость (не зарегистрирован), дата: 21 января, 2014 - 14:06
#permalink
[php]
[php]
[php]
[html]
[html]
[html]
[html]
[html]
[html]
[html]
[php]
[php]
[php]
[php]
[js]
[php]
[php]
[js]
[html]
[css]
[css]
<code></code>[/css][/css][/html][/js]

[/php][/js][/php][/php][/php][/php][/html][/html][/html][/html][/html][/html][/html][/php][/php][/php][/php]


Автор: Fuchs, дата: 26 мая, 2014 - 11:47
#permalink

Подскажите, пожалуйста, почему при вызове метода exec() в консоли, возвращает undefined (вместо null) в чем причина, что я делаю не так?

пример:
var regex = /^https?:\/\//;
var arr = reg.exec("https://logentries.com/app/4845c68c#f=1393829100000&s=log&t=1393915500000");


Автор: Гость (не зарегистрирован), дата: 9 августа, 2014 - 15:23
#permalink
var regex = /^https?:\/\//;
var arr = regex.exec("https://logentries.com/app/4845c68c#f=1393829100000&s=log&t=1393915500000");

Автор: Гость (не зарегистрирован), дата: 30 ноября, 2014 - 21:32
#permalink

говностатья!


Автор: Crazy Prophet (не зарегистрирован), дата: 30 ноября, 2014 - 23:12
#permalink

Комментарий выше -- говнокомментарий!


Автор: Zenitchik, дата: 22 мая, 2015 - 16:03
#permalink
(myArray = myRe.exec(str)) != null

Надеюсь, это была шутка?
Сравнивать объект с null - это дико. Проверка объекта на null стандартно делается путём приведения к Boolean (тем более, что в операторе while - автоматически приведётся).


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
10 + 0 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum