Ядро JavaScript 1.5. Руководство по использованию

Работа с Регулярными Выражениями


Регулярные выражения используются с методами test и exec объекта RegExp и с методами match, replace, search и split объекта String.Эти методы рассматриваются в книге .


Таблица 4.2 &nbsp&nbsp Методы, Использующие Регулярные Выражения.


Метод
Описание

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 &nbsp&nbspРезультаты Выполнения Регулярного Выражения.



Объект


Свойство или Индекс
Описание


В этом примере:
myArray
Совпавшая строка и все запомненные подстроки. ["dbbd", "bb"]index Индекс совпадений во вводе с базой 0. 1input Строка-оригинал. "cdbbdbsbz"[0] Последние совпавшие символы. "dbbd"myRe lastIndex Индекс, начиная с которого стартует следующее совпадение. (Это свойство установлено только тогда, когда регулярное выражение использует опцию g, описанную в разделе .) 5source Текст патэрна. Обновляется в момент создания регулярного выражения, не исполняется.

"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. Если Вам нужен доступ к свойствам регулярного выражения, созданного с помощью инициализатора объекта, Вы должны сначала присвоить это выражение переменной.




Содержание раздела