Регулярные выражения используются с методами test и exec класса RegExp и с методами match, replace, search и split объекта String. Информация о ходе выполнения регулярного выражения хранится в глобальном объекте RegExp, которому можно обратиться после выполнения регулярного выражения.
Методы класса RegExp
Метод
Описание
exec
Метод объекта RegExp, выполняющий поиск совпадения в строке. Возвращает массив информации. Пример Js43
test
Метод объекта RegExp, тестирующий на совпадение в строке. Возвращает true или false.
match
Метод объекта String, выполняющий поиск совпадения в строке. Возвращает массив информации или null при отсутствии совпадений. Пример Js38, Js39
search
Метод объекта String, тестирующий на совпадение в строке. Возвращает индекс совпадения или -1, если поиск завершился ничем. Пример Js40
replace
Метод объекта String, выполняющий поиск совпадения в строке и замещающий совпавшую подстроку замещающей подстрокой.
Пример Js41
split
Метод объекта String, использующий регулярное выражение или фиксированную строку для разбивки строки на массив подстрок.
Пример Js42
Примеры
1.Рассмотримфрагмент скрипта:
var result, re, str;
str = "Here is my email: glove@linux.org and here is his: hate@windows.com";
re = new RegExp("\w+(\.?\w+)?@\w+\.\w+");
result = str.match(re);
В result будет массив электронных адресов полученных из строки str.
2. К глобальному объекту RegExp можно обращаться непосредственно для доступа к результатам поиска с использованием регулярного выражения. Этот объект создается самим интерпретатором и доступен всегда. Формат доступа к нему выглядит так:
RegExp.своиство. Все свойства этого объекта доступны только для чтения.
Свойства глобального объекта RegExp.
$n
Здесь n - номер подвыражения (от 1 до 9), значение которого требуется получить. Подвыражения с номерами, большими 9, можно получить, используя методы match и exec.
index
Возвращает позицию найденной подстроки в строке.
input | &
Возвращает строку, где производится поиск.
lastIndex
Позиция в строке, откуда начинается поиск.
lastMatch | $&
Возвращает последнюю найденную подстроку.
lastParent | $+
Возвращает последнюю найденную группу символов, если в регулярном выражении использовались подвыражения.
lastСontext |$`
Возвращает строку, составленную из всех символов от начала исходной строки до последней найденной подстроки, не включая ее.
rightContext | $'
Возвращает строку, составленную из всех символов от последней найденной подстроки, не включая ее, до конца исходной строки.
Пример.
Рассмотрим фрагмент скрипта, выделяющий протокол адрес и имя файла из строки ссылки:
var re, str, protocol, address, filename, result;
str = "http://www.somedomain.ru/index2.html"
re = new RegExp("((\w+):\/\/)?([^\/]+)(.*)?", "i");
result = re.exec(str);
if (result != null)
{
protocol = RegExp.$2;
address = RegExp.$3;
filename = RegExp.$4;
...
}
Здесь для доступа к результату применения регулярного выражения используется глобальный объект RegExp. Свойство RegExp.$n –позволяет нам получить подвыражение, сохранённое в круглых скобках. Подвыражения в скобках нумеруются в слева направо.
В регулярном выражении мы использовали вложенные друг в друга подвыражения. В этом случае из них сохраняется сначала внешнее, а затем внутреннее. Это нами сделано для того, чтобы выделить из группы символов "http://" обозначение протокола "http". А группу "http://", сохраненную под номером 1, можно просто потом не использовать.
Строка result = re.exec(str) запускает "разборку".
С помощью условного оператора if (result != null)……… проверяем, совпало ли наше регулярное выражение с исходной строкой, то есть правилен ли наш WEB-адрес.