Книга: JavaScript. Подробное руководство, 6-е издание

RegExp

RegExp

RegExp

регулярные выражения для поиска по шаблону (Object-» RegExp)

Синтаксис литерала

/маска/атрибуты

Конструктор

new RegExp(шаблон, атрибуты)

Аргументы

шаблон Строка, задающая шаблон регулярного выражения или другое регулярное выражение.

атрибуты Необязательная строка, содержащая любые из атрибутов «g», «і» и «т», задающих глобальный, нечувствительный к регистру и многострочный поиск, соответственно. До выхода стандарта ECMAScript атрибут «m» не был доступен. Если аргумент шаблон - это регулярное выражение, а не строка, аргумент атрибуты может отсутствовать.

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

Возвращается новый объект RegExp с указанными шаблоном и атрибутами. Если аргумент шаблон представляет собой регулярное выражение, а не строку, конструктор RegExp() создаст новый объект RegExp, используя тот же шаблон и атрибуты, что и в указанном объекте RegExp. Если RegExp() вызывается как функция (без оператора new), то ведет себя так же, как при вызове с оператором new, кроме случая, когда шаблон уже является объектом RegExp; тогда функция возвращает аргумент шаблон, а не создает новый объект RegExp.

Исключения

SyntaxError Генерируется, если шаблон не является допустимым регулярным выражением или если аргумент атрибуты содержит символы, отличные от «g», «і» и «т».

ТуреЕrror Генерируется, если шаблон - это объект RegExp и аргумент атрибуты не

опущен.

Свойства экземпляра

global      Признак присутствия в RegExp атрибута «g».
ignoreCase  Признак присутствия в RegExp атрибута «і».
lastlndex   Позиция символа при последнем обнаружении соответствия;
              используется для поиска в строке нескольких соответствий.
multiline   Признак присутствия в RegExp атрибута «m».
source      Исходный текст регулярного выражения.

Методы

ехес()  Выполняет мощный универсальный поиск по шаблону,
test () Проверяет, содержит ли строка данный шаблон.

Описание

Объект RegExp представляет регулярное выражение - мощное средство для поиска в строках по шаблону. Синтаксис и применение регулярных выражений полностью описаны в главе 10.

См. также

Глава 10

RegExp.exec()

универсальный поиск по шаблону

Синтаксис

regexp.exec (строка)

Аргументы

строка Строка, в которой выполняется поиск.

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

Массив, содержащий результаты поиска или значение 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 = /bJavaw*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, если строка содержит текст, соответствующий regexp, и false - в противном случае.

Исключения

ТуреЕrror Генерируется, если метод вызывается для объекта, не являющегося

объектом RegExp.

Описание

Метод test() проверяет строку, чтобы увидеть, содержит ли она текст, который соответствует regexp. Если да, он возвращает true, в противном случае - false. Вызов метода test() для регулярного выражения и передача ему строки s эквивалентны следующему выражению:

(r.exec(s) != null)

Пример

var pattern = /java/і;
pattern.test("JavaScript"); // Вернет true
pattern.test("ECMAScript"); // Вернет false

См. также

RegExp.exec(), RegExp.lastlndex, String.match(), String.replace(), String.substring(); глава 10

RegExp.toString()

преобразует регулярное выражение в строку (переопределяет Object.toString())

Синтаксис

regexp.toString()

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

Строковое представление regexp.

Исключения

ТуреЕrror Генерируется, если метод вызывается для объекта, который не явля

ется объектом RegExp.

Описание

Метод RegExp.toString() возвращает строковое представление регулярного выражения в форме литерала регулярного выражения.

Обратите внимание: от реализаций не требуется обязательного добавления управляющих последовательностей, гарантирующих, что возвращаемая строка будет корректным литералом регулярных выражений. Рассмотрим регулярное выражение, созданное с помощью конструкции new RegExp("/". "g"). Реализация RegExp.toString() может вернуть для регулярного выражения ///g либо добавить управляющую последовательность и вернуть ///g.

Оглавление книги


Генерация: 0.049. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз