^ Соответствует началу строкового выражения или началу строки при мно_ гострочном поиске.
$ Соответствует концу строкового выражения или концу строки при много_ строчном поиске.
\b Соответствует границе слова, т. е. соответствует позиции между символом
\w и символом \W или между символом \w и началом или концом строки.
(Однако обратите внимание, что [\b] соответствует символу забоя.)
\B Соответствует позиции, не являющейся границей слов.
(?=p) Положительное условие на последующие символы. Требует, чтобы после_
дующие символы соответствовали шаблону p, но не включает эти символы
в найденную строку.
(?!p) Отрицательное условие на последующие символы. Требует, чтобы следую_
щие символы не соответствовали шаблону p.
Флаги
И еще один, последний элемент грамматики регулярных выражений. Флаги ре_ гулярных выражений задают высокоуровневые правила соответствия шаблонам.
11.2. Методы класса String для поиска по шаблону
В отличие от остальной грамматики регулярных выражений, флаги указывают_ ся не между символами слэша, а после второго из них. JavaScript 1.2 поддержи_ вает два флага. Флаг i указывает, что поиск по шаблону должен быть нечувстви_ тельным к регистру символов, а флаг g – что поиск должен быть глобальным, т. е. должны быть найдены все соответствия в строке. Оба флага могут быть объ_ единены для выполнения глобального поиска без учета регистра символов.
Например, чтобы выполнить безразличный к регистру поиск первого вхожде_ ния слова «java» (или «Java», «JAVA» и т. д.), можно воспользоваться нечувст_ вительным к регистру регулярным выражением /\bjava\b/i. А чтобы найти все вхождения этого слова в строке, надо добавить флаг g: /\bjava\b/gi.
JavaScript 1.5 поддерживает дополнительный флаг m, который выполняет поиск по шаблону в многострочном режиме. Если строковое выражение, в котором вы_ полняется поиск, содержит символы перевода строк, то в этом режиме якорные символы ^ и $, помимо того, что они соответствуют началу и концу всего строко_ вого выражения, также соответствуют началу и концу строки. Например, шаб_ лону /Java$/im соответствует как слово «java», так и «Java\nis fun».
В табл. 11.6 приводится перечень флагов регулярных выражений. Заметим, что флаг g более подробно рассматривается далее в этой главе вместе с методами классов String и RegExp, используемых для фактической реализации поиска.