Работа с Регулярными Выражениями
Регулярные выражения используются с методами test и exec объекта RegExp и с методами match, replace, search и split объекта String.Эти методы рассматриваются в книге .
Таблица 4.2    Методы, Использующие Регулярные Выражения.
Метод
Описание
exec | |
Метод объекта RegExp, выполняющий поиск совпадения в строке. Возвращает массив информации.
test | |
Метод объекта RegExp, тестирующий на совпадение в строке. Возвращает true или false.
match | |
Метод объекта String, выполняющий поиск совпадения в строке. Возвращает массив информации или null при отсутствии совпадений.
search |
|
Метод объекта String, тестирующий на совпадение в строке. Возвращает индекс совпадения или -1, если поиск завершился ничем.
replace |
|
Метод объекта String, выполняющий поиск совпадения в строке и замещающий совпавшую подстроку замещающей подстрокой.
split |
|
Метод объекта String, использующий регулярное выражение или фиксированную строку для разбивки строки на массив подстрок.
Если Вам нужно знать, найден ли патэрн в строке, используйте методы test или search; для получения большей информации (но при замедлении выполнения) используйте методы exec или match. Если Вы используете методы exec или match и если совпадение найдено, эти методы возвращают массив и обновляют свойства объекта регулярного выражения, а также предопределённого объекта регулярного выражения, RegExp. Если совпадение не найдено, метод exec возвращает null (которое конвертируется в false).
В следующем примере скрипт использует метод exec для поиска совпадения в строке:
<SCRIPT LANGUAGE="JavaScript1.2">
myRe=/d(b+)d/g;
myArray = myRe.exec("cdbbdbsbz");
</SCRIPT>
Если Вам не нужен доступ к свойствам регулярного выражения, альтернативным способом создания myArray будет такой скрипт:
<SCRIPT LANGUAGE="JavaScript1.2">
myArray = /d(b+)d/g.exec("cdbbdbsbz");
</SCRIPT>
Если Вы хотите сконструировать регулярное выражение из строки, вот ещё один скрипт:
<SCRIPT LANGUAGE="JavaScript1.2">
myRe= new RegExp ("d(b+)d", "g");
myArray = myRe.exec("cdbbdbsbz");
</SCRIPT>
С помощью этих скриптов находится совпадение и возвращается массив и обновляются свойства, показанные в следующей таблице.
Таблица 4.3   Результаты Выполнения Регулярного Выражения.
Объект
Свойство или Индекс
Описание
В этом примере:
myArray |
| |
Совпавшая строка и все запомненные подстроки.
|
["dbbd", "bb"]
index |
|
Индекс совпадений во вводе с базой 0.
|
1
input |
|
Строка-оригинал.
|
"cdbbdbsbz"
[0] | |
Последние совпавшие символы.
|
"dbbd"
myRe |
lastIndex | |
Индекс, начиная с которого стартует следующее совпадение. (Это свойство установлено только тогда, когда регулярное выражение использует опцию g, описанную в разделе .)
|
5
source | |
Текст патэрна. Обновляется в момент создания регулярного выражения, не исполняется.
| "d(b+)d"
Как показано во второй форме этого примера, Вы можете использовать регулярное выражение, созданное с помощью инициализатора объекта, без присвоения его переменной. Если Вы всё же это сделаете, каждое вхождение будет новым регулярным выражением. Исходя из этого, если Вы используете форму без присвоения выражения переменной, Вы не сможете затем получить доступ к свойствам этого регулярного выражения. Например, у Вас есть скрипт:
<SCRIPT LANGUAGE="JavaScript1.2">
myRe=/d(b+)d/g;
myArray = myRe.exec("cdbbdbsbz");
document.writeln("The value of lastIndex is " + myRe.lastIndex);
</SCRIPT>
Вывод этого скрипта:
The value of lastIndex is 5
Если Ваш скрипт, однако, будет таким:
<SCRIPT LANGUAGE="JavaScript1.2">
myArray = /d(b+)d/g.exec("cdbbdbsbz");
document.writeln("The value of lastIndex is " + /d(b+)d/g.lastIndex);
</SCRIPT>
он выдаст:
The value of lastIndex is 0
Вхождения /d(b+)d/g в этих двух операторах являются разными объектами регулярного выражения и, соответственно, имеют разные значения свойства lastIndex. Если Вам нужен доступ к свойствам регулярного выражения, созданного с помощью инициализатора объекта, Вы должны сначала присвоить это выражение переменной.
Содержание раздела