Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. RegExp
  6. RegExp.prototype.exec()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

RegExp.prototype.exec()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

Сводка

Методexec() выполняет поиск сопоставления регулярного выражения в указанной строке. Возвращает массив с результатами илиnull.

Если целью выполнения является просто определить, проходит оно или нет, используйте методRegExp.prototype.test(), либо метод строкиString.prototype.search().

Синтаксис

regexObj.exec(str)

Параметры

str

Строка, с которой производится сопоставление регулярного выражения.

Возвращаемое значение

Если сопоставление успешно выполнилось, методexec() возвращает массив и обновляет свойства объекта регулярного выражения. Возвращаемый массив в первом элементе содержит сопоставленный текст, а в последующих элементах — текст, захваченный при сопоставлении круглыми скобками.

Если сопоставление не удалось, методexec() возвращаетnull.

Описание

Рассмотрим следующий пример:

js
// Сопоставляется с фразой «кайф, сплющь», за которой следует слово «вши»,// игнорируя любые символы между ними. Запоминает слова «сплющь» и «вши».// Игнорирует регистр символов.var re = /кайф,\s(сплющь).+?(вши)/gi;var result = re.exec("Эх, чужд кайф, сплющь объём вши, грызя цент.");

Таблица ниже показывает результаты выполнения данного примера:

ОбъектСвойство/ИндексОписаниеПример
result[0]Все сопоставившиеся символы в строке.кайф, сплющь объём вши
[1], ...[n] Сопоставившиеся подстроки в круглых скобках, если они присутствуют. Количество возможных подстрок ничем не ограничено.[1] = сплющь
[2] = вши
indexИндекс сопоставления в строке, начинается с нуля.9
inputОригинальная строка.Эх, чужд кайф, сплющь объём вши, грызя цент.
relastIndex Индекс, с которого начнётся следующая попытка сопоставления. Если отсутствует флаг"g", остаётся равным нулю.31
ignoreCase Указывает, что в регулярном выражении используется флаг игнорирования регистра"i".true
global Указывает, что в регулярном выражении используется флаг глобального сопоставления"g".true
multiline Указывает, что в регулярном выражении используется флаг сопоставления по нескольким строкам"m".false
sourceТекст шаблона регулярного выражения.кайф,\s(сплющь).+?(вши)

Примеры

Пример: поиск последовательных сопоставлений

Если ваше регулярное выражение использует флаг"g", вы можете использовать методexec() несколько раз для нахождения последовательных сопоставлений в одной и той же строке. Если вы сделаете это, поиск начнётся по подстроке строкиstr, начало которой определяется свойствомlastIndex регулярного выражения (методtest() также увеличивает свойствоlastIndex). Например, предположим, что у вас есть следующий скрипт:

js
var myRe = /аб*/g;var str = "аббвгдеабж";var myArray;while ((myArray = myRe.exec(str)) !== null) {  var msg = "Найдено " + myArray[0] + ". ";  msg += "Следующее сопоставление начнётся с позиции " + myRe.lastIndex;  console.log(msg);}

Этот скрипт выведет следующий текст:

js
Найдено абб. Следующее сопоставление начнётся с позиции 3Найдено аб. Следующее сопоставление начнётся с позиции 9

Примечание: не помещайте литерал регулярного выражения (или конструкторRegExp) внутрь условияwhile; это приведёт к бесконечному циклу, поскольку свойствоlastIndex будет сбрасываться в ноль на каждой итерации цикла. Также убедитесь, что установлен флаг глобального сопоставления, в противном случае цикл будет бесконечным.

Пример: использование методаexec() вместе с литералами регулярного выражения

Вы можете использовать методexec() без создания объектаRegExp:

js
var matches = /(привет \S+)/.exec("Это привет миру!");console.log(matches[1]);

Скрипт выведет в журнал строку «привет миру!».

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-regexp.prototype.exec

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp