Объект
RegExp используется для создания регулярных выражений в рубрике "Регулярные выражения". Там же описаны способы создания этих объектов.
Все описанные ниже свойства объекта
RegExp являются статическими. Это означает, что они хранятся в единственном экземпляре и изменяются при каждой операции сопоставления с регулярным выражением.
Свойства объекта RegExp
Свойство |
Описание |
Член прототипа |
$1, …, $9 |
Хранят запомненные подстроки. |
Нет |
$01, …, $99 |
Хранят запомненные подстроки. |
Нет |
$& |
См. lastMatch. |
Да |
&` |
См. leftContext. |
Да |
&' |
См. rightContext. |
Да |
&+ |
См. lastParen. |
Да |
&* |
См. multiline. |
Да |
constructor |
Конструктор, который создал объект. |
Да |
global |
Значение опции глобального поиска. |
Нет |
ignoreCase |
Значение опции не различать строчные и прописные буквы. |
Нет |
input |
Последняя исходная строка. |
Да |
lastIndex |
Номер позиции в строке для следующего сопоставления с образцом. |
Нет |
lastMatch |
Последняя найденная подстрока. |
Да |
lastParen |
Последняя запомненная подстрока. |
Да |
leftContext |
Подстрока, предшествующая последней найденной подстроке. |
Да |
multiline |
Значение опции многострочного поиска. |
Нет |
prototype |
Ссылка на прототип класса объектов. |
Нет |
rightContext |
Подстрока, следующая за последней найденной подстрокой. |
Да |
source |
Текст регулярного выражения. |
Нет |
Методы объекта RegExp
Метод |
Описание |
Член прототипа |
compile |
Компилирует регулярное выражение. |
Да |
exec |
Выполняет сопоставление строки с образцом и заносит результаты в массив. |
Да |
test |
Проверяет успешность сопоставления строки с образцом. |
Да |
toString |
Преобразует регулярное выражение в строку. |
Да |
valueOf |
Возвращает примитивное значение объекта. |
Нет |
Синтаксис: RegExp.$n
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Если часть регулярного выражения заключена в круглые скобки, то соответствующая ей подстрока запоминается для последующего использования. Значениями свойств
$1, …,
$9 являются подстроки исходной строки, которые были запомнены в процессе последнего сопоставления с образцом. Регулярное выражение может содержать любое количество выражений в круглых скобках, но в объекте
RegExp запоминаются только последние девять найденных соответствий. Пример: следующий сценарий
var re = new RegExp("(\\d*)\\s*(\\d*)","ig");
var arr = re.exec("111 2222 33333");
var s = "$1 = '" + RegExp.$1 + "' ";
s += "$2 = '" + RegExp.$2 + "' ";
s += "$3 = '" + RegExp.$3 + "'";
document.write(s);
выведет на экран обозревателя текст
$1 = '111' $2 = '2222' $3 = ''.
Эти свойства объекта
RegExp являются статическими и изменяются при каждой операции сопоставления с регулярным выражением. В методе
String.replace они употребляются без имени объекта
RegExp.
Синтаксис: RegExp.$nn
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Поддержка: Поддерживаются с версии 5.5.
Не поддерживаются.
Если часть регулярного выражения заключена в круглые скобки, то соответствующая ей подстрока запоминается для последующего использования. Значениями свойств
$01, …,
$99 являются подстроки исходной строки, которые были запомнены в процессе последнего сопоставления с образцом. Регулярное выражение может содержать любое количество выражений в круглых скобках, но в этих свойствах
запоминаются только последние 99 найденных соответствий. Пример: следующий сценарий
var re = new RegExp("(\\d*)\\s*(\\d*)","ig");
var arr = re.exec("111 2222 33333");
var s = "$01 = '" + RegExp.$01 + "' ";
s += "$02 = '" + RegExp.$02 + "' ";
s += "$03 = '" + RegExp.$03 + "'";
document.write(s);
выведет на экран обозревателя текст
$01 = '111' $02 = '2222' $03 = ''.
Эти свойства объекта
RegExp являются статическими и изменяются при каждой операции сопоставления с регулярным выражением. В методе
String.replace они употребляются без имени объекта
RegExp.
Синтаксис: регвыр.global
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства
global является значение опции "g" (глобальный поиск), заданное при создании объекта
регвыр. Например, следующий сценарий
var re = new RegExp("a+b+c","ig");
document.write(re.global);
выведет на экран обозревателя текст
true.
Синтаксис: регвыр.ignoreCase
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства
ignoreCase является значение опции "i" (не различать строчные и прописные буквы), заданное при создании объекта
регвыр. Например, следующий сценарий
var re = new RegExp("a+b+c","ig");
document.write(re.ignoreCase);
выведет на экран обозревателя текст
true.
Синтаксис: RegExp.input
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства
input является последняя исходная строка, к которой применялось сопоставление с образцом. Это свойство объекта
RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var re = new RegExp("\\d+", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.input);
выведет на экран обозревателя текст
111 2222 33333.
Синтаксис: регвыр.lastIndex
Атрибуты: { DontEnum, DontDelete }
Значением свойства
lastIndex является целое число, содержащее номер элемента строки, с которого начнется следующее сопоставление с образцом. При создании объекта
регвыр этому свойству присваивается значение 0. Оно используется только в тех случаях, когда включена опция глобального поиска (т. е. свойство
global имеет значение
true). Пример:
var re = /(aha)/g;
var a = re.exec("aha"); // a равно ["aha", "aha"], re.lastIndex равно 3
var a = re.exec("aha"); // a равно [""], re.lastIndex по-прежнему равно 3
re.lastIndex = 0; // повторить поиск
var a = re.exec("aha"); // a равно ["aha", "aha"], re.lastIndex равно 3
Синтаксис: RegExp.lastMatch
Атрибуты: { DontEnum, DontDelete, ReadOnly}
Поддержка: Поддерживается с версии 5.5.
Поддерживается с версии 4.0.
Значением свойства
lastMatch является последняя найденная подстрока исходной строки. Это свойство объекта
RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var re = new RegExp("\\d+", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.lastMatch);
выведет на экран обозревателя текст
111.
Синтаксис: RegExp.lastParen
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Поддержка: Поддерживается с версии 5.5.
Поддерживается с версии 4.0.
Значением свойства
lastParen является последняя запомненная подстрока исходной строки, соответствующая подвыражению регулярного выражения, заключенному в круглые скобки. Это свойство объекта
RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var re = new RegExp("(\\d+) (\\d+)", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.lastParen);
выведет на экран обозревателя текст
2222.
Синтаксис: RegExp.leftContext
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Поддержка: Поддерживается с версии 5.5.
Поддерживается с версии 4.0.
Значением свойства
leftContext является подстрока исходной строки, предшествующая последней найденной подстроке. Это свойство объекта
RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var arr = / (\d+)/.exec("111 2222 33333");
document.write(RegExp.leftContext + "|" + RegExp.lastMatch + "|" + RegExp.rightContext);
выведет на экран обозревателя текст
111| 2222| 33333.
Синтаксис: регвыр.multiline
Атрибуты: { DontEnum, DontDelete, ReadOnly}
Поддержка: Поддерживается с версии 5.5.
Поддерживается с версии 4.0.
Значением свойства
multiline является значение опции "m" (многострочный поиск), заданное при создании объекта
регвыр. Например, следующий сценарий
var re = new RegExp("a+b+c","im");
document.write(re.ignoreCase);
выведет на экран обозревателя текст
true.
В обозревателях Netscape опция "m" не поддерживается, а свойство
multiline является статическим свойством объекта
RegExp. Мы можем присваивать ему логическое значение, которое включает или выключает многострочный поиск для всех регулярных выражений, например
RegExp.multiline = true
. Помните, что обработчики событий после своего завершения всегда сбрасывают значение этого свойства в
false. Кроме того, Netscape поддерживает
$* как синоним данного свойства.
Синтаксис: RegExp.rightContext
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Поддержка: Поддерживается с версии 5.5.
Поддерживается с версии 4.0.
Значением свойства
rightContext является подстрока исходной строки, следующая за последней найденной подстрокой. Это свойство объекта
RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var arr = / (\d+)/.exec("111 2222 33333");
document.write(RegExp.leftContext + "|" + RegExp.lastMatch + "|" + RegExp.rightContext);
выведет на экран обозревателя текст
111| 2222| 33333.
Синтаксис: регвыр.source
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства
source является строка, содержащая регулярное выражение, заданное при создании объекта
регвыр. Например, следующий сценарий
var re = new RegExp("a+b+c","ig");
document.write(re.source);
выведет на экран обозревателя текст
a+b+c.
Синтаксис: регвыр.compile(образец, опции?)
Аргументы: образец — регулярное выражение
опции — необязательные опции поиска
Метод
compile компилирует
образец во внутренний формат хранения, что в дальнейшем ускоряет сопоставление с этим образцом. Компиляция регулярного выражения имеет смысл, если вы собираетесь использовать это выражение несколько раз. Пример:
var r = new RegExp("[A-Z]", "g");
r.compile("[a-z]", "g");
Синтаксис: регвыр.exec(строка)
Аргументы: строка — любое строковое выражение
Результат: массив результатов или null
Метод
exec выполняет сопоставление
строки с образцом, заданным
регвыр. Если сопоставление с образцом закончилось неудачей, то возвращается значение
null. В противном случае результатом является массив подстрок, соответствующих заданному образцу. В процессе сопоставления производится обновление всех свойств объекта
регвыр (и тем самым всех свойств объекта
RegExp).
Результирующий массив имеет следующие свойства:
- свойство input содержит исходную строку;
- свойство index содержит позицию найденной подстроки в исходной строке;
- свойство length равно n + 1, где n — количество подвыражений регулярного выражения, заключенных в круглые скобки;
- элемент 0 содержит найденную подстроку;
- элементы 1, …, n содержат подстроки, соответствующие подвыражениям регулярного выражения в круглых скобках.
Пример: следующий сценарий
var arr = /(\d+)\.(\d+)\.(\d+)/.exec("Я родился 21.05.1958");
document.write("Дата рождения: ", arr[0], "<br>");
document.write("День рождения: ", arr[1], "<br>");
document.write("Месяц рождения: ", arr[2], "<br>");
document.write("Год рождения: ", arr[3], "<br>");
выведет на экран обозревателя текст:
Дата рождения: 21.05.1958
День рождения: 21
Месяц рождения: 05
Год рождения: 1958
Включение в регулярное выражение опции глобального поиска позволяет многократно применять этот метод к исходной строке для последовательного выделения всех подстрок, соответствующих данному образцу. Например, следующий сценарий
var re = /\d+/g;
var s = "123 abc 456 def 789 xyz";
var result;
while (result = re.exec(s))
document.write(result[0] + " ");
выведет на экран обозревателя строку
123 456 789.
Примечание. Помните, что в подобных циклах нельзя выполнять операции с регулярными выражениями, поскольку они изменяют статические свойства объекта
RegExp.
Синтаксис: регвыр.test(строка)
Аргументы: строка — любое строковое выражение
Результат: логическое значение
Метод
test выполняет сопоставление
строки с образцом, заданным
регвыр и возвращает
true, нсли сопоставление с образцом прошло успешно, и
false в противном случае. Этот метод эквивалентен выражению
регвыр.
exec(
строка) !=
null.
Пример:
if (!/(\d+)\.(\d+)\.(\d+)/.test(str))
document.write("Неверное значение строки!");
Синтаксис: регвыр.toString()
Результат: строковое значение
Метод
toString преобразует
регвыр в строковое значение. Например, сценарий
var x = new RegExp("a+b+c", "g");
document.write(x.toString());
выведет на экран обозревателя строку
/a+b+c/g.