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


Подвыражения
Объект RegExp предлагает простой способ извлечения фрагментов строк, соответствующих части шаблона. Это достигается с помощью группирования тех частей шаблона (путем размещения вокруг них скобок), которые требуется извлечь. Предположим, нужно извлечь имена (но не фамилии) и телефонные номера из строк типа

Имя Фамилия NNN-NNNN

где N обозначают цифры телефонного номера. Здесь можно использовать следующее регулярное выражение, в котором группируется часть, соответствующая имени, и часть, соответствующая телефонному номеру:

var pattern = /(\w+) \w+ ([\d-]{8})/;

Этот шаблон можно прочитать так: один или больше символов, которые встречаются в словах, с последующим пробелом, затем еще один или больше символов, которые встречаются в словах, с последующим пробелом и, наконец, строка из восьми цифр и дефисов.
   При сравнении строки с этим шаблоном скобки индуцируют подвыражения. Если сравнение оказывается успешным (т.е. обнаруживается совпадение), на эти указанные в скобках подвыражения можно ссылаться с помощью статических свойств $1 - $9 объекта класса RegExp. В продолжение нашего примера рассмотрим

var customer = "Alan Turing 555-1212";
var pattern = / (\w+) \w+ ([\d-]{8})/;
pattern.test(customer);

Поскольку шаблон содержит скобки, с помощью которых создаются два подвыражения (\w+ и [\d-] {8}), можно отдельно сослаться на соответствующие им две подстроки — "Alan" и "555-1212". Подстроки, доступные с помощью такого подхода, нумеруются слева направо, начиная с $ 1 и заканчивая обычно $ 9. Например, в результате выполнения фрагмента программного кода

var customer = "Alan Turing 555-1212";
var pattern = /(\w+) \w+ ([\d-]{8})/;
if (pattern.test(customer))
alert("RegExp.$1 = " + RegExp.$1 + "\nRegExp.$2 = " + RegExp.$2);

мы увидим :
RegExp.$1 = Alan
RegExp.$2 = 555-1212

Обратите внимание на то, что для доступа к компонентам-подвыражениям используется объект класса RegExp, а не созданный нами экземпляр RegExp или шаблон.
назад: test() далее: compile()


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


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

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


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







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