Массив, содержащий результаты поиска или значение null, если соответствия не найдено. Формат возвращаемого массива описан далее.
Исключения
ТуреЕrror
Генерируется, если метод вызывается для объекта, не являющегося объектом
RegExp
.
Описание
Метод
ехес
– наиболее мощный из всех
методов объектов
RegExp
и
String
для поиска по шаблону. Это универсальный метод, использовать который несколько сложнее, чем методы
RegExp.test,
String.search, String.replace
и
String.match.
Метод
exec
ищет в строке текст, соответствующий выражению
regexp
. И если находит, то возвращает массив результатов; в противном случае возвращается значение null. Элемент 0 полученного массива представляет собою искомый текст. Элемент 1 - это текст, соответствующий первому подвыражению в скобках внутри
regexp
, если оно есть. Элемент 2 соответствует второму подвыражению и т. д. Свойство
length
массива, как обычно, определяет количество элементов в массиве. В дополнение к элементам массива и свойству
length
значение, возвращаемое
ехес,
имеет еще два свойства. Свойство
index
указывает позицию первого символа искомого текста. Свойство
input
ссылается на строку. Этот возвращаемый массив совпадает с массивом, возвращаемым методом
String.match,
когда он вызывается для неглобального объекта
RegExp
.
Когда метод
ехес
вызывается для неглобального шаблона, он выполняет поиск и возвращает описанный выше результат. Однако если
regexp
– глобальное регулярное выражение,
ехес
ведет себя несколько сложнее. Он начинает поиск в строке с символьной позиции, заданной свойством
regexp.lastlndex
. Найдя соответствие, метод устанавливает свойство
lastIndex
равным позиции первого символа после найденного соответствия. Это значит, что
ехес
можно вызвать несколько раз, чтобы выполнить цикл по всем соответствиям в строке. Если метод
ехес
больше не находит соответствий, он возвращает значение null и сбрасывает свойство
lastlndex
в ноль. Начиная поиск непосредственно после успешного нахождения соответствия в другой строке, необходимо соблюдать внимательность и вручную установить свойство
lastlndex
равным нулю. Обратите внимание:
ехес
всегда включает полную информацию для найденного соответствия в возвращаемый им массив независимо от того, является
regexp
глобальным шаблоном или нет. Этим
ехес
отличается от метода
String.match
, который возвращает намного меньше информации при работе с глобальными шаблонами. Вызов
ехес
в цикле - единственный способ получить полную информацию о результатах поиска для глобального шаблона.
Пример
Для нахождения всех соответствий в строке метод
ехес
можно вызывать в цикле:
var pattern = /\bJava\w*\b/g;
var text = "JavaScript is more fun than Java or JavaBeans!";
var result;
while((result = pattern.exec(text)) != null) {
alert("Matched ‘" + result[0] +
at position " + result.index +
next search begins at position " + pattern.lastlndex);
}
См.
также
RegExp.lastlndex, RegExp.test, String.match, String.replace, String.search; глава 10
RegExp.global
выполняется ли глобальный поиск по данному регулярному выражению
Синтаксис
regexp.global
Описание
global - это логическое свойство объектов
RegExp
доступное только для чтения. Оно указывает, выполняет ли данное регулярное выражение глобальный поиск, т.е. было-ли оно создано с атрибутом «g».
RegExp.ignoreCase
чувствительно ли регулярное выражение к регистру
Синтаксис
regexp.ignoreCase
Описание
ignoreCase
– это логическое свойство объектов
RegExp
, доступное только для чтения. Оно указывает, выполняет ли данное регулярное выражение поиск без учета регистра, т. е. было ли оно создано с атрибутом «і».
RegExp.lastlndex
начальная позиция следующего поиска
Синтаксис
regexp.lastlndex
Описание
lastlndex
– это доступное для чтения и записи свойство объектов
RegExp
. Для регулярных выражений с установленным атрибутом «g» оно содержит целое, указывающее позицию в строке символа, который следует непосредственно за последним соответствием, найденным с помощью методов
RegExp.ехес
и
RegExp.test.
Эти методы используют данное свойство в качестве начальной точки при следующем поиске. Благодаря этому данные методы можно вызывать повторно для выполнения цикла по всем соответствиям в строке. Обратите внимание:
lastlndex
не используется объектами
RegExp
, не имеющими атрибута «g» и не представляющими собой глобальные шаблоны.
Это свойство доступно для чтения и для записи, поэтому можно установить его в любой момент, чтобы указать, где в целевой строке должен быть начат следующий поиск. Методы
ехес
и
test
автоматически сбрасывают свойство
lastlndex
в 0, когда не могут найти какого-либо (или следующего) соответствия. Начиная поиск в новой строке после успешного поиска в предыдущей, необходимо явно установить это свойство равным 0.
См. также
RegExp.ехес, RegExp.test
RegExp.source
текст регулярного выражения
Синтаксис
regexp.source
Описание
source
– доступное только для чтения строковое свойство объектов
RegExp
, содержащее текст шаблона
RegExp
. Текст не включает ограничивающие символы слэша, используемые в литералах регулярных выражений, а также не включает атрибуты «g», «і» и «m».
RegExp.test
проверяет, соответствует ли строка шаблону
Синтаксис
regexp.test(строка)
Аргументы
строка Проверяемая строка.
Возвращаемое значение
Возвращает true, если строка содержит текст, соответствующий