Если при поиске требуется нечто большее, чем простое совпадение, например, найти один или более символов b или найти пробел, в патэрн включаются специальные символы. Например, патэрн /ab*c/ совпадает с любой комбинацией символов, в которой после одиночной 'a' идёт нуль или более символов 'b" (* означает 0 или более вхождений предшествующего элемента/символа) и сразу за ними - 'c'. В строке "cbbabbbbcdebc" этот патэрн совпадёт с подстрокой 'abbbbc'.
В следующей таблице дан полный список и и описание специальных символов, используемых в регулярных выражениях.
Таблица 4.1 Специальные символы в Регулярных Выражениях
Символ
Значение
\
Одно из следующих:
Для символов, которые обычно рассматриваются литерально, означает, что следующий символ является специальным и не должен интерпретироваться литерально.
Например, /b/ совпадает с символом 'b'. Поместив backslash перед b, то есть так: /\b/, мы делаем символ специальным, в данном случае - означающим границу слова.
Для символов, которые обычно рассматриваются специально, означает, что следующий символ является литеральным и не должен интерпретироваться как специальный.
Например, * это специальный символ, означающий 0 или более вхождений предыдущего символа; например, /a*/ означает 0 или более 'a'. Чтобы подставит * литерально, ставим перед ним backslash; например, /a\*/ совпадает с 'a*'.
^
Соответствует началу ввода. Если многострочный флаг установлен в true, совпадает также сразу после символа разрыва строки.
Например, /^A/ не совпадает с 'A' в строке "an A", но совпадает с первым 'A' в строке "An A".
$
Совпадает с концом ввода. Если многострочный флаг установлен в true, совпадает также непосредственно перед символом разрыва строки.
Например, /t$/ не совпадает с 't' в строке "eater", но совпадает с в строке "eat".
*
Предшествующий символ совпадает 0 или более раз.
Например, /bo*/ совпадает с 'boooo' в строке "A ghost booooed" и с 'b' в "A bird warbled", но не совпадает ни с чем в строке "A goat grunted".
+
Предшествующий символ совпадает 1 или более раз. Эквивалентно {1,}.
Например, /a+/ совпадает с 'a' в "candy" и со всеми 'a' в "caaaaaaandy".
?
Предшествующий символ совпадает 0 или 1 раз.
Например, /e?le?/ совпадает с 'el' в "angel" и с 'le' в "angle."
Если используется сразу после квантификаторов *, +, ? или {}, делает квантификатор нежадным (совпадает минимальное число раз), что противоположно действию по умолчанию, когда квантификатор - жадный (совпадает максимальное число раз).
Используется также во вперёдсмотрящих/lookahead утверждениях, описанных в пунктах о x(?=y) и x(?!y) в этой таблице.
.
(Десятичная точка) совпадает с любым одиночным символом, исключая символ новой строки.
Например, /.n/ совпадает с 'an' и с 'on' в "nay, an apple is on the tree", но не с 'nay'.
(x)
Совпадает с 'x' и запоминает совпадение. Это называется "захватывающие скобки".
Например, /(foo)/ совпадает с 'foo', и запоминает её, в "foo bar." Совпадающая подстрока может быть вызвана из элементов результирующего массива [1], ..., [n].
(?:x)
Совпадает с 'x', но не запоминает совпадение. Это называется "незахватывающие скобки". Совпадающая подстрока не может быть вызвана из элементов результирующего массива [1], ..., [n].
x(?=y)
Совпадает с 'x' только в том случае, если после 'x' следует 'y'. Например, /Jack(?=Sprat)/ совпадает с 'Jack' только тогда, когда следом идёт 'Sprat'. /Jack(?=Sprat|Frost)/ совпадает с 'Jack' только тогда, когда следом идёт 'Sprat' или 'Frost'. Однако ни 'Sprat', ни 'Frost' не являются частью результата совпадения.
x(?!y)
Совпадает с 'x' только в том случае, если после 'x' не следует 'y'. Например, /\d+(?!\.)/ совпадает с числом только в том, случае, если после него нет десятичной точки. регулярное выражение /\d+(?!\.)/.exec("3.141") совпадает с 141, но не совпадает с 3.141.
x|y
Совпадает с 'x' или 'y'.
Например, /green|red/ совпадает с 'green' в "green apple" и с 'red' в "red apple."
{n}
Где n это положительное целое. Совпадает с точно n-количеством вхождений предшествующего символа.
Например, /a{2}/ не совпадает с 'a' в "candy," но совпадает со всеми 'a' в "caandy" и с первыми двумя 'a's в "caaandy."
{n,}
Где n это положительное целое. Совпадает с как минимум n вхождений предшествующего символа.
Например, /a{2,} не совпадает с 'a' в "candy", но совпадает со всеми 'a' в "caandy" и в "caaaaaaandy."
{n,m}
Где n и m это положительные целые. Совпадает с минимум n и с максимум m вхождений предшествующего символа.
Например, /a{1,3}/ не совпадает ни с чем в "cndy", совпадает с 'a' в "candy", с первыми двумя 'a' в "caandy" и с первыми тремя 'a' в "caaaaaaandy" Заметьте, что при совпадении с "caaaaaaandy", совпадёт "aaa", хотя оригинальная строка содержит большее количество 'a'.
[xyz]
Набор символов. Совпадение с одним из символов в скобках. Можно специфицировать диапазон символов с помощью дефиса.
Например, [abcd] это то же самое, что и [a-d]. Совпадает с '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]/ совпадает с '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\u00A0\u2028\u2029].
Например, /\s\w*/ совпадает с ' bar' в "foo bar."
\S
Совпадает с одиночным символом, отличным от пробельного символа. Эквивалентно [ ^\f\n\r\t\v\u00A0\u2028\u2029].
Например, /\S\w*/ совпадает с 'foo' в "foo bar."
\t
Совпадает с табуляцией/tab.
\v
Совпадает с вертикальной табуляцией/vertical tab.
\w
Совпадает с любым алфавитным символом, включая символ подчёркивания/underscore. Эквивалентно [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."
\0
Совпадает с символом NUL. Не вводите после него других цифр.
\xhh
Совпадает с символом с 16-ричным кодом hh (две 16-ричные цифры)
\uhhhh
Совпадает с символом с 16-ричным кодом hhhh (четыре 16-ричные цифры).