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 должно быть целым положительным числом. |