Добавляем...


Свойства RegExp
Использование внутренних свойств экземпляра объектов регулярных выражений и статических свойств (свойств класса) объекта RegExp может оказаться полезным как при решении сложных задач соответствия, так и при отладке. Свойства экземпляра объектов RegExp приводятся в табл.; почти все они уже известны читателю.
Свойство Значение Пример
global Логическое значение, указывающее, установлен ли флаг глобальности (g). Доступно только для чтения var pattern = /(кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln (pattern.global);
// печатает true
ignoreCase Логическое значение, указывающее, установлен ли флаг независимости от регистра (i). Доступно только для чтения var pattern = / (кот) - (пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln(pattern.ignoreCase);
// печатает false
lastlndex Целое значение, указывающее позицию в строке, с которой будет начинаться следующий поиск. Это значение можно менять var pattern = /(кот)-(пес)/g;
pattern.test ("это кот-пес и кот-пес");
document.writeln(pattern.lastlndex);
// печатает 11
multiline Логическое значение, указывающее, установлен ли флаг многострочности (m). Доступно только для чтения var pattern = /(кот)-(пес)/g; pattern.test("это кот-пес и кот-пес");
document.writeln(pattern.multiline);
// печатает false
source Строковая форма регулярного выражения. Доступно только для чтения var pattern = /(кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln(pattern.source);
// печатает (кот)-(пес)
Объект класса RegExp имеет статические свойства, которые также могут оказаться весьма полезными. Эти свойства приведены в табл. Они могут иметь две формы. Для альтернативной формы используется знак доллара и специальный символ — эта форма знакома тем, кто уже активно работал с регулярными выражениями. Недостатком альтернативной формы является то, что доступ к ней осуществляется в режиме ассоциативного массива. Заметим, что использование этой формы, вероятно, смутит тех, кто не работал с языками типа Perl, поэтому, пожалуй, лучше ее не использовать.
Свойство Альтернативная форма Значение Пример
$1,$2.....$9 Нет Строки, соответствующие первым девяти подвыражениям в скобках для последнего найденного соответствия шаблону var pattern = /(кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln("$l="+RegExp.$1);
document.writeln ("$2="+RegExp.$2) ;
// печатает $1= кот $2 = пес
index Нет Значение индекса первого символа в строке, с которого начинается соответствие шаблону, найденное в результате последней операции сравнения. Это свойство имеет широкую поддержку, но не является частью стандарта ЕСМА, поэтому данное значение лучше вычислить с помощью свойства length найденной подстроки и lastlndex var pattern =/(кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln(RegExp.index);
// печатает 4
input $_ Строка, используемая для сравнения с данным шаблоном по умолчанию var pattern = / (кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln (RegExp.input);
// печатает "это кот-пес и кот-пес"
document.writeln(RegExp['$_']);
// печатает "это кот-пес и кот-пес"
lastlndex Нет Целочисленное значение, указывающее позицию в строке, с которой будет начинаться следующий поиск. Соответствует значению аналогичного свойства экземпляра, которое использовать предпочтительнее var pattern = / (кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln(RegExp.lastlndex);
// печатает 11
lastMatch $& Строка с соответствующим шаблону текстом, найденным в результате последней операции сравнения var pattern = /(кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln(RegExp.lastMatch);
// печатает "кот-пес"
document.writeln(RegExp['$&']);
// печатает "кот-пес"
lastParen $+ Строка, соответствующая последнему заключенному в скобки подвыражению для последнего найденного соответствия шаблону var pattern = /(кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln(RegExp.lastParen);
// печатает "пес"
document.writeln(RegExp['$+']);
// печатает "пес"
leftContext $` Строка с текстом, размещенным слева от по- . следнего найденного соответствия шаблону var pattern = /(кот)-(пес)/g;
pattern.test("это кот-пес и кот-пес");
document.writeln(RegExp.leftContext);
// печатает "это"
document.writeln(RegExp['$`']);
// печатает "это"
rightContext $' Строка с текстом, размещенным справа от последнего найденного соответствия шаблону var pattern = /(кот)-(пес)/g;
pattern.test ("это кот-пес и кот-пес");
document.writeln(RegExp.rightContext);
// печатает "и кот-пес"
document.writeln(RegExp['$\' ']) ;
// печатает "и кот-пес"

   Интересным аспектом статических свойств класса RegExp является то, что они являются глобальными и, таким образом, изменяются каждый раз, когда вы используете регулярное выражение, как с методами String, так и с методами RegExp. По этой причине они являются исключением из правила, предусматривающего для JavaScript статический обзор данных. Для указанных свойств используется динамический обзор — т.е. изменения отражаются в объекте RegExp в контексте функции вызова, а не в контексте объемлющего исходного кода. Например, если в некотором фрейме вызывается функция, использующая регулярные выражения в другом фрейме, то JavaScript обновит статические свойства RegExp во фрейме вызова, а не во фрейме, где находится вызываемая функция. Это редко создает проблемы, но об этом необходимо помнить, когда статические свойства приходится использовать в окружении с фреймами.
назад: exec() далее:


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика