Если при поиске требуется выполнить нечто большее, чем простое совпадение, например, найти один или более символов b или найти пробелы, патэрн должен содержать специальные символы. Например, патэрн /ab*c/ совпадает с любой комбинацией символов, в которой после одиночного 'a' следуют ноль или более 'b' (* означает 0 или более вхождений предыдущего символа) и символ 'c'. В строке "cbbabbbbcdebc" этот патэрн совпадает с подстрокой 'abbbbc'.
В таблице дан полный список - описание специальных символов, которые могут использоваться в регулярных выражениях.
Символ | Описание |
\ | Один из следующих вариантов: Для символов, которые обычно рассматриваются литерально, указывает, что следующий символ является специальным и не должен интерпретироваться литерально. Например, /b/ совпадает с символом 'b'. При помещении обратного слеша перед 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." |
? | Предшествующий символ совпадает 0 или 1 раз. Например, /e?le?/ совпадает с 'el' в "angel" и с 'le' в "angle." |
. | (Десятичная точка) совпадает с любым одиночным символом, кроме символа новой строки. Например, /.n/ совпадает с 'an' и с 'on' в "nay, an apple is on the tree", но не с 'nay'. |
(x) | Симол 'x', запоминает его для последующего использования. Например, /(foo)/ совпадает (и запоминает) с 'foo' в "foo bar." Совпавшая подстрока может быть вызвана из результирующего массива элементов [1],..., [n] или из свойств $1,..., $9 предопределённого объекта RegExp. Например: <SCRIPT LANGUAGE="JavaScript1.2"> re = /(\w+)\s(\w+)/; str = "John Smith"; newstr = str.replace(re, "$2, $1"); document.write(newstr) </SCRIPT> Будет выведено "Smith, John". |
x | y | 'x' или с 'y'. Например, /green|red/ совпадает с 'green' в "green apple" и с 'red' в "red apple." |
{n} | Где n это положительное целое. Предшествующий символ совпадает точно n раз. Например, /a{2}/ не совпадает с 'a' в "candy", но совпадает со всеми 'a' в "caandy" и с первыми двумя 'a' в "caaandy." |
{n,} | Где n это положительное целое. Предшествующий символ совпадает как минимум n раз. Например, /a{2,} не совпадает с 'a' в "candy", но совпадает со всеми 'a' в "caandy" и в "caaaaaaandy." |
{n,m} | Где n и m это положительные целые. Предшествующий символ совпадает как минимум n и максимум m раз. Например, /a{1,3}/ не совпадает ни с чем в "cndy", совпадает с 'a' in "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' in "noonday"; /\wy\b/ совпадает с 'ly' in "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 | Знак перехода к новой странице. |
\n | Начало новой строки (начало абзаца в Unix-системах) |
\r | Возврат каретки (комбинация \r\n дает начало абзаца в DOS-системах) |
\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 считается восьмеричной escape-последовательностью, как описано в следующем ряду. |
\ooctal \xhex | Где \ooctal это 8-ричное escape-значение или где \xhex это 16-ричное escape-значение. Даёт возможность внедрять ASCII-коды в регулярные выражения. |