Клиентский JavaScript. Справочник

         

Описание


При использовании функции-конструктора необходимо использовать нормальные правила замены (escape) символов (вставка перед специальными символами обратного слэша \). Например, следующие записи эквивалентны:

re = newRegExp("\\w+")
re = /\w+/

В таблице дан полный список и описание специальных символов, которые могут использоваться в регулярных выражениях.

Таблица 1.3 Специальные символы в регулярных выражениях
Символ Значение
\ Для символов, которые обычно рассматриваются литерально, указывает, что следующий символ является специальным и не должен интерпретироваться литерально.

Например, /b/ совпадает с символом 'b'. Поместив backslash перед b,  /\b/, делаем символ специальным, в данном случае - обозначающим границу слова.

-или-

Для символов, которые обычно рассматриваются как специальные, указывает, что следующий символ не является специальным и должен интерпретироваться литерально.

Например, * это спецсимвол, означающий 0 или более совпадений предыдущего символа; например, /a*/ означает 0 или более совпадений символа а. Для подстановки * литерально, предварите его обратным слэшем; например, /a\*/ совпадает с 'a*'.

^ Совпадение в начале ввода или строки.



Например, /^A/ не совпадает с 'A' в строке "an A," но совпадает в "An A."

$ Совпадение в конце ввода или строки.

Например, /t$/ не совпадает с 't' в "eater", но совпадает в "eat"

* Совпадение предшествующего символа 0 или более раз.

Например, /bo*/ совпадает с 'boooo' в "A ghost booooed" и с 'b' в "A bird warbled", но совпадений нет в "A goat grunted".

+ Совпадение предшествующего символа 1 или более раз. Эквивалентно {1,}.

Например, /a+/ совпадает с 'a' в "candy" и со всеми a в "caaaaaaandy."

? Совпадение предшествующего символа 1 или более раз.

Например, /e?le?/ совпадает с 'el' in "angel" and the 'le' in "angle."

. (Десятичная точка) совпадает с любым символом, за исключением символа новой строки.

Например, /.n/ совпадает с 'an' и с 'on' в "nay, an apple is on the tree", но не с 'nay'.

(x) Совпадает с 'x' и запоминает совпадение.

Например, /(foo)/ совпадает (и запоминается) с 'foo' в "foo bar." Совпавшая подстрока может быть вызвана из элементов результирующего массива [1], ..., [n] или из свойств $1, ..., $9 предопределённого объекта RegExp.

x|y Совпадает с 'x' или с 'y'.

Например, /green|red/ совпадает с 'green' в "green apple" и с 'red' в "red apple".

{n} Где n это положительное целое число. Совпадение предшествующего символа точно n раз.

Например, /a{2}/ не совпадает с 'a' в "candy," но совпадает с со всеми а в "caandy" и с первыми двумя а в "caaandy."

{n,} Где n это положительное целое число. Совпадение как минимум n появлений предшествующего символа.

Например, /a{2,} не совпадает с 'a' в "candy", но совпадает со всеми а в "caandy" и в "caaaaaaandy".

{n,m} Где n и m это положительные целые числа. Совпадают минимум n и максимум m вхождений предшествующего символа.

Например, /a{1,3}/ не совпадает ни с чем в "cndy", совпадает с 'a' в "candy", двумя а в "caandy" и первыми тремя a в "caaaaaaandy". Заметьте, что, при совпадении с "caaaaaaandy", совпадает "aaa", хотя строка-оригинал содержит больше а.

[xyz] Набор символов. Совпадает с одним (любым) из символов набора. Можно специфицировать диапазон символов с помощью дефиса.

Например, [abcd] равносильно [a-c]. Они совпадают с 'b' в "brisket" и с 'c' в "ache".

[^xyz] Отрицающий набор символов. То есть он совпадает со всем, кроме того, что содержится в скобках. Можно специфицировать диапазон символов с помощью дефиса.

Например, [^abc] равносильно [^a-c]. Совпадает с 'r' в "brisket" и с 'h' в "chop."

[\b] Совпадает с backspace. (Не путайте с \b.)

\b Соответствует границе слова, такой как space/пробел. (Не путайте с [\b].)

Например, /\bn\w/ совпадает с 'no' в "noonday";/\wy\b/ совпадает с 'ly' в "possibly yesterday."

\B Совпадает с не-границей слова.

Например, /\w\Bn/ совпадает с 'on' в "noonday", и /y\B\w/ совпадает с 'ye' в "possibly yesterday."

\cX Где X это управляющий символ. Совпадает с управляющим символом в строке.

Например, /\cM/ совпадает с control-M в строке.

\d Совпадает с цифровым символом. Эквивалентно [0-9].

Например, /\d/ или /[0-9]/ совпадает с '2' в "B2 is the suite number."

\D Совпадает с любым нецифровым символом. Эквивалентно [^0-9].

Например, /\D/ или /[^0-9]/ совпадает с matches 'B' в "B2 is the suite number."

\f Совпадает с form-feed/прогоном страницы.

\n Совпадает с linefeed/прогоном строки.

\r Совпадает с carriage return/возвратом каретки.

\s Совпадает с одиночным пробельным символом, включая space, tab, form feed, line feed. Эквивалентно [ \f\n\r\t\v].

Например, /\s\w*/ совпадает с ' bar' в "foo bar."

\S Совпадает с одиночным символом, отличным от пробельного символа. Эквивалентно [^ \f\n\r\t\v].

Например, /\S/\w* совпадает с  'foo' в "foo bar."

\t Совпадает с  tab/табуляцией.

\v Совпадает с vertical tab/вертикальной табуляцией.

\w Совпадает с любым алфавитным или цифровым символом, включая символ подчёркивания. Эквивалентно [A-Za-z0-9_].

Например, /\w/ совпадает с 'a' в "apple", с '5' в "$5.28" и с '3' в "3D."

\W Совпадает с любым несловарным символом. Эквивалентно [^A-Za-z0-9_].

Например, /\W/ или /[^$A-Za-z0-9_]/ совпадает с '%' в "50%."

\n Где n это положительное целое. Обратная ссылка на последнюю подстроку, совпавшую с n символов в скобках в регулярном выражении (с учётом левой скобки).

Например, /apple(,)\sorange\1/ совпадает с 'apple, orange,' в "apple, orange, cherry, peach." Более полные примеры даны после этой таблицы.

Примечание: Если количество левых скобок меньше числа, специфицированного в \n, \n считается 8-ричной escape-заменой, как описано в следующем ряду данной таблицы.

\ooctal
\xhex
Где \ooctal это 8-ричное escape-значение или где \xhex  это 16-ричное escape-значение. Позволяет внедрять ASCII-коды в регулярные выражения.

Литеральная нотация предоставляет компиляцию регулярного выражения при вычислении выражения. Используйте литеральную нотацию, если регулярное выражение останется константным. Например, если Вы используете литеральную нотацию для построения регулярного выражения, используемого в цикле, регулярное выражение не будет перекомпилироваться при каждой итерации.

Конструктор объекта регулярного выражения, например, new RegExp("ab+c"), предоставляет компиляцию регулярного выражения на этапе прогона. Используйте функцию-конструктор, если Вы знаете, что патэрн регулярного выражения будет изменяться, или если патэрн Вам не известен и получается из другого источника, как при вводе пользователя. После того как Вы определили регулярное выражение, и если это регулярное выражение используется по всему скрипту и может изменяться, Вы можете использовать метод compile для компиляции нового регулярного выражения для обеспечения эффективного многократного использования.

Отдельный предопределённый объект RegExp имеется в каждом окне; то есть каждый отдельный поток выполнения JavaScript получает свой собственный объект RegExp. Поскольку каждый скрипт запускается на выполнение без прерывания потока, это гарантирует, что разные скрипты не перепишут значения объекта RegExp.

Предопределённый объект RegExp имеет static-свойства input, multiline, lastMatch, lastParen, leftContext, rightContext и с $1 по $9. Свойства input и multiline могут быть предустановлены. Значения других static-свойств устанавливаются после выполнения методов exec и test отдельного объекта регулярного выражения и после выполнения методов match и replace объекта String.



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