Объект 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 Возвращает примитивное значение объекта. Нет

Свойства $1, …, $9

Синтаксис: 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.

Свойства $01, …, $99

Синтаксис: RegExp.$nn
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Поддержка: Internet Explorer Поддерживаются с версии 5.5.

Netscape Navigator Не поддерживаются.
Если часть регулярного выражения заключена в круглые скобки, то соответствующая ей подстрока запоминается для последующего использования. Значениями свойств $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

Синтаксис: регвыр.global
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Значением свойства global является значение опции "g" (глобальный поиск), заданное при создании объекта регвыр. Например, следующий сценарий
var re = new RegExp("a+b+c","ig");
document.write(re.global);
выведет на экран обозревателя текст true.

Свойство ignoreCase

Синтаксис: регвыр.ignoreCase
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Значением свойства ignoreCase является значение опции "i" (не различать строчные и прописные буквы), заданное при создании объекта регвыр. Например, следующий сценарий
var re = new RegExp("a+b+c","ig");
document.write(re.ignoreCase);
выведет на экран обозревателя текст true.

Свойство input

Синтаксис: 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

Синтаксис: регвыр.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

Свойство lastMatch ($&)

Синтаксис: RegExp.lastMatch
Атрибуты:  { DontEnum, DontDelete, ReadOnly}
Поддержка: Internet Explorer Поддерживается с версии 5.5.

Netscape Navigator Поддерживается с версии 4.0.
Значением свойства lastMatch является последняя найденная подстрока исходной строки. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var re = new RegExp("\\d+", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.lastMatch);
выведет на экран обозревателя текст 111.

Свойство lastParen (&+)

Синтаксис: RegExp.lastParen
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Поддержка: Internet Explorer Поддерживается с версии 5.5.

Netscape Navigator Поддерживается с версии 4.0.
Значением свойства lastParen является последняя запомненная подстрока исходной строки, соответствующая подвыражению регулярного выражения, заключенному в круглые скобки. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var re = new RegExp("(\\d+) (\\d+)", "g");
var arr = re.exec("111 2222 33333");
document.write(RegExp.lastParen);
выведет на экран обозревателя текст 2222.

Свойство leftContext (&`)

Синтаксис: RegExp.leftContext
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Поддержка: Internet Explorer Поддерживается с версии 5.5.

Netscape Navigator Поддерживается с версии 4.0.
Значением свойства leftContext является подстрока исходной строки, предшествующая последней найденной подстроке. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var arr = / (\d+)/.exec("111 2222 33333");
document.write(RegExp.leftContext + "|" + RegExp.lastMatch + "|" + RegExp.rightContext);
выведет на экран обозревателя текст 111| 2222| 33333.

Свойство multiline ($*)

Синтаксис: регвыр.multiline
Атрибуты:  { DontEnum, DontDelete, ReadOnly}
Поддержка: Internet Explorer Поддерживается с версии 5.5.

Netscape Navigator Поддерживается с версии 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 поддерживает $* как синоним данного свойства.

Свойство rightContext (&')

Синтаксис: RegExp.rightContext
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Поддержка: Internet Explorer Поддерживается с версии 5.5.

Netscape Navigator Поддерживается с версии 4.0.
Значением свойства rightContext является подстрока исходной строки, следующая за последней найденной подстрокой. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением. Пример: следующий сценарий
var arr = / (\d+)/.exec("111 2222 33333");
document.write(RegExp.leftContext + "|" + RegExp.lastMatch + "|" + RegExp.rightContext);
выведет на экран обозревателя текст 111| 2222| 33333.

Свойство source

Синтаксис: регвыр.source
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Значением свойства source является строка, содержащая регулярное выражение, заданное при создании объекта регвыр. Например, следующий сценарий
var re = new RegExp("a+b+c","ig");
document.write(re.source);
выведет на экран обозревателя текст a+b+c.

Метод compile

Синтаксис: регвыр.compile(образец, опции?)
Аргументы: образец — регулярное выражение

опции — необязательные опции поиска
Метод compile компилирует образец во внутренний формат хранения, что в дальнейшем ускоряет сопоставление с этим образцом. Компиляция регулярного выражения имеет смысл, если вы собираетесь использовать это выражение несколько раз. Пример:
var r = new RegExp("[A-Z]", "g");
r.compile("[a-z]", "g");

Метод exec

Синтаксис: регвыр.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(строка)
Аргументы: строка — любое строковое выражение
Результат: логическое значение
Метод test выполняет сопоставление строки с образцом, заданным регвыр и возвращает true, нсли сопоставление с образцом прошло успешно, и false в противном случае. Этот метод эквивалентен выражению регвыр.exec(строка) != null. Пример:
if (!/(\d+)\.(\d+)\.(\d+)/.test(str))
  document.write("Неверное значение строки!");

Метод toString

Синтаксис: регвыр.toString()
Результат: строковое значение
Метод toString преобразует регвыр в строковое значение. Например, сценарий
var x = new RegExp("a+b+c", "g");
document.write(x.toString());
выведет на экран обозревателя строку /a+b+c/g.