Книга: 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
.
- 10.3. Объект RegExp
- 10.3.1. Свойства RegExp
- 10.3.2. Методы RegExp
- Динамическое создание объектов RegExp
- Объект RegExp
- 6.2. Описание объектов
- Проверяем на совпадения
- Поиск файлов с использованием регyлярных выражений
- 23.2.3. Простая утилита grep
- 9. Регулярные выражения
- 3.2.6 Regular Expressions for Search and Replacement Operations
- 11.3.2.5 Regular expression operator summary