Использование специальных символов

Если при поиске требуется выполнить нечто большее, чем простое совпадение, например, найти один или более символов 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-коды в регулярные выражения.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: