Свойства $1, :, $9
Если часть регулярного выражения заключена в круглые скобки, то соответствующая ей подстрока запоминается для последующего использования. Значениями свойств $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
Поддержка : | | Поддерживаются с версии 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
Значением свойства global является значение опции "g" (глобальный поиск), заданное при создании объекта регвыр.
Например, следующий сценарий
var re = new RegExp("a+b+c","ig"); document.write(re.global);
выведет на экран обозревателя текст true.
Свойство ignoreCase
Значением свойства ignoreCase является значение опции "i" (не различать строчные и прописные буквы), заданное при создании объекта регвыр.
Например, следующий сценарий
var re = new RegExp("a+b+c","ig"); document.write(re.ignoreCase);
выведет на экран обозревателя текст true.
Свойство input
Значением свойства input является последняя исходная строка, к которой применялось сопоставление с образцом. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением.
Пример: следующий сценарий
var re = new RegExp("\\d+", "g"); var arr = re.exec("111 2222 33333"); document.write(RegExp.input);
выведет на экран обозревателя текст 111 2222 33333.
Свойство lastIndex
Значением свойства 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 ($&)
Поддержка : | | Поддерживается с версии 5.5. | | | Поддерживается с версии 4.0. |
Значением свойства lastMatch является последняя найденная подстрока исходной строки. Это свойство объекта RegExp является статическим и изменяется при каждой операции сопоставления с регулярным выражением.
Пример: следующий сценарий
var re = new RegExp("\\d+", "g"); var arr = re.exec("111 2222 33333"); document.write(RegExp.lastMatch);
выведет на экран обозревателя текст 111.
Свойство lastParen (&+)
Поддержка : | | Поддерживается с версии 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.
Свойство leftContext (&`)
Поддержка : | | Поддерживается с версии 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 ($*)
Поддержка : | | Поддерживается с версии 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 поддерживает $* как синоним данного свойства.
Свойство rightContext (&")
Поддержка : | | Поддерживается с версии 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
Значением свойства 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], " "); document.write("День рождения: ", arr[1], " "); document.write("Месяц рождения: ", arr[2], " "); document.write("Год рождения: ", arr[3], " "); выведет на экран обозревателя текст:
Дата рождения: 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. 1 2 3 4 5
8 8 8
| |