Oleg Alexandrov

RegExp

Назад

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

Синтаксис

С помощью специального синтаксиса литералов

let regex = /pattern/flags;

// с помощью конструктора
let regex = new RegExp( "pattern", "flags" );
let 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].
\S Позволяет найти одиночный символ, который не является пробельным. Под пробельным символом понимается пробел, табуляция, перевод страницы, перевод строки и другие пробельные символы Юникода. Эквивалентен набору символов [^ \f\n\r\t\v].
[\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 должно быть целым положительным числом.

Назад