JavaScript регулярные выражения

Описание

Класс RegExp в JavaScript представляет собой регулярные выражения – объект, описывающий символьный шаблон. Объекты RegExp, как правило, создаются с помощью специального синтаксиса литералов, представленного ниже, но так же могут быть созданы посредством конструктора RegExp().

Синтаксис

// с помощью специального синтаксиса литералов
var regex = /pattern/flags;

// с помощью конструктора
var regex = new RegExp( "pattern", "flags" );
var regex = new RegExp( /pattern/, "flags" );

Значения параметров:

ПараметрОписание
patternТекст регулярного выражения, или начиная с ES5, другого объекта RegExp (или литерала) для копирования.
flagsЕсли указаны, то определяют флаги регулярных выражений для добавления. Значение соответствует строке, содержащей любую комбинацию значений, приведенных ниже в следующем разделе. Необязательное значение.

Флаги регулярных выражений

ФлагОписание
g Позволяет найти все совпадения, а не останавливаться после первого совпадения (global match flag).
iПозволяет выполнить сопоставление без учета регистра (ignore case flag).
mСопоставление производится по нескольким строкам. Обработка начальных и конечных символов (^ и $) производится по нескольким строкам, то есть сопоставление происходит с началом или концом каждой строки (разделители \n или \r), а не только с началом, или концом всей строки (multiline flag).
uШаблон будет расценен как последовательность кодовых точек Юникода (unicode flag).
yСопоставление происходит по индексу на который указывает свойство lastIndex этого регулярного выражения, при этом сопоставление не производиться по более позднему, или раннему индексу (sticky flag).

Наборы символов

СимволОписание
[abc]
[a-c]
[0-9]
Позволяет найти любой символ в скобках.
[^abc]
[^a-c]
[^0-9]
Позволяет найти любой символ за исключением того, или тех, которые находятся в скобках.

Метасимволы

СимволОписание
.Позволяет найти один символ, кроме символа новой строки, или символа конца строки (\n, \r, \u2028 или \u2029).
\dПозволяет найти символ цифры в базовом латинском алфавите. Эквивалентин использованию набору символов [0-9].
\DПозволяет найти любой символ, который не является цифрой в базовом латинском алфавите. Эквивалентен набору символов [^0-9].
\sПозволяет найти одиночный пробельный символ. Под пробельным символом понимается пробел, табуляция, перевод страницы, перевод строки и другие пробельные символы Юникода. Эквивалентен набору символов [\f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​​\u202f\u205f​\u3000].
\SПозволяет найти одиночный символ, который не является пробельным. Под пробельным символом понимается пробел, табуляция, перевод страницы, перевод строки и другие пробельные символы Юникода. Эквивалентен набору символов [^ \f\n\r\t\v​\u00a0\u1680​\u180e\u2000​\u2001\u2002​\u2003\u2004​\u2005\u2006​\u2007\u2008​\u2009\u200a​\u2028\u2029​​\u202f\u205f​\u3000].
[\b]Позволяет найти символ backspace (специальный символ \b, U+0008).
\0Позволяет найти символ 0 (ноль).
\nПозволяет найти символ новой строки.
\fПозволяет найти символ перевода страницы.
\rПозволяет найти символ возврата каретки.
\tПозволяет найти символ горизонтальной табуляции.
\vПозволяет найти символ вертикальной табуляции.
\wПозволяет найти любой буквенно-цифровой символ базового латинского алфавита, включая подчеркивание. Эквивалентен набору символов [A-Za-z0-9_].
\WПозволяет найти любой символ, который не является символом из базового латинского алфавита. Эквивалентен набору символов [^a-Za-z0-9_].
\cXПозволяет найти контрольный символ в строке. Где X - буква от A до Z. Например, /\cM/ обозначает символ Ctrl-M.
\xhhПозволяет найти символ, используя шестнадцатеричное значение (hh - двухзначное шестнадцатеричное значение).
\uhhhhПозволяет найти символ, используя кодировку UTF-16 (hhhh - четырехзначное шестнадцатеричное значение).
\u{hhhh} или
\u{hhhhh}
Позволяет найти символ со значением Юникода U+hhhh или U+hhhhh (шестнадцатеричное значение). Только когда задан флаг u.
\Указывает, что следующий символ является специальным и не должен интерпретироваться буквально. Для символов, которые обычно трактуются специальным образом, указывает, что следующий символ не является специальным и должен интерпретироваться буквально.

Ограничения

СимволОписание
^Сопостовление производится с символом в начале строки (ввода). Если флаг m (multiline flag) указан, то сопоставление также произодится с позицией следующей за символом переноса строки.
$Сопостовление производится с символом в конце строки (ввода). Если флаг m (multiline flag) указан, то сопоставление также произодится с позицией следующей перед символом переноса строки.
\bПозволяет выполнить поиск соответствия в начале или конце слова (например, позиция между буквой и пробелом).
\BПозволяет выполнить поиск соответствия не в начале или конце слова.

Квантификаторы

СимволОписание
n*Сопостовление происходит с любой строкой, содержащей ноль или более вхождений символа n.
n+Сопостовление происходит с любой строкой, содержащей хотя бы один символ n.
n?Сопостовление происходит с любой строкой с предшествующим элементом n ноль или один раз.
n{x}Соответствует любой строке, содержащей последовательность символов n определенное количество раз x. X должно быть целым положительным числом.
n{x,}Соответствует любой строке, содержащей по крайней мере x вхождений предшествующего элемента n. X должно быть целым положительным числом.
n{x, y}Соответствует любой строке, содержащей по крайней мере x, но не более, чем с y вхождениями предшествующего элемента n. X и y должны быть целыми положительными числами.
n*?
n+?
n??
n{x}?
n{x,}?
n{x,y}?
Сопостовление происходит по аналогии с квантификаторами *, +, ? и {...}, однако при этом поиск идет минимально возможного сопоставления. По умолчанию используется "жадный" режим, ? в конце квантификатора позволяет задать "нежадный" режим при котором повторение сопоставления происходит минимально возможное количество раз.
x(?=y)Позволяет сопоставить x, только если за x следует y.
x(?!y)Позволяет сопоставить x, только если за x не следует y.
x|yСопоставление происходит с любой из указанных альтернатив.

Группировка и обратные ссылки

СимволОписание
(x)Позволяет найти символ x и запомнить результат сопоставления ("захватывающие скобки"). Сопоставленная подстрока может быть вызвана из элементов результирующего массива [1]..., [n], или из свойств предопределенного объекта RegExp $1 ..., $9.
(?:x)Позволяет найти символ x, но не запоминать результат сопоставления ("незахватывающие скобки"). Сопоставленная подстрока не может быть вызвана из элементов результирующего массива [1]..., [n], или из свойств предопределенного объекта RegExp $1 ..., $9.
\nОбратная ссылка на последнюю подстроку, совпадающую с n-ой по счёту в круглых скобках в регулярном выражении (нумерация скобок идет слева направо). n должно быть целым положительным числом.