Синтаксис регулярного выражения
Обновлен: Ноябрь 2007
Регулярное выражение — это шаблон текста, состоящий из обычных знаков (например букв от "a" до "z") и специальных знаков, известных как метасимволы. Этот шаблон описывает одну или несколько строк, с которыми выполняется сравнение во время поиска текста.
Примеры регулярных выражений
Выражение |
Соответствия |
---|---|
/^\s*$/ |
Соответствует пустой строке. |
/\d{2}-\d{5}/ |
Проверка номера идентификатора, состоящего из 2 цифр, дефиса и 5 дополнительных цифр. |
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ |
Соответствует тегу HTML. |
В следующей таблице содержится полный список метасимволов и описывается их поведение в контексте регулярных выражений:
Знак |
Описание |
---|---|
\ |
Помечает следующий знак как специальный знак, литерал, обратную ссылку или восьмеричный escape-знак. Например, "n" соответствует букве "n". "\n" соответствует символу новой строки. Последовательность "\\" соответствует "\", а "\(" соответствует "(". |
^ |
Соответствует позиции в начале входной строки. Если для объекта RegExp установлено свойство Multiline, знак "^" также соответствует позиции, находящейся сразу после "\n" или "\r". |
$ |
Соответствует позиции в конце входной строки. Если для объекта RegExp установлено свойство Multiline, знак "$" также соответствует позиции, находящейся непосредственно перед "\n" или "\r". |
* |
Соответствует предыдущему символу или части выражения, повторяющимся нуль или более раз. Например, "zo*" соответствует "z" и "zoo". "*" является эквивалентом "{0,}". |
+ |
Соответствует предыдущему символу или части выражения, повторяющимся один или более раз. Например, "zo+" соответствует "zo" и "zoo", но не "z". "+" является эквивалентом "{1,}". |
? |
Соответствует предыдущему символу или части выражения, повторяющимся нуль или один раз. Например, "do(es)?" соответствует "do" в словах "do" или "does". "?" является эквивалентом "{0,1}". |
{n} |
n — это неотрицательное целое число. Строго соответствует числу раз, равному n. Например, "o{2}" не соответствует "o" в слове "Bob", но соответствует "oo" в слове "food". |
{n,} |
n — это неотрицательное целое число. Соответствует числу раз, равному или превышающему n. Например, "o{2,}" не соответствует букве "o" в слове "Bob", но соответствует всем буквам "o" в слове "foooood". "o{1,}" является эквивалентом "o+". "o{0,}" является эквивалентом "o*". |
{n,m} |
M и n — это неотрицательные целые числа, где n <= m. Соответствует числу раз, равному или превышающему n и не превышающему m. Например, "o{1,3}" соответствует первым трем буквам "o" в слове "fooooood". "o{0,1}" является эквивалентом "o?". Обратите внимание на то, что между запятой и числами нельзя вставлять пробел. |
? |
Когда данный знак стоит сразу после любых других квантификаторов (*, +, ?, {n}, {n,}, {n,m}), то такой сравниваемый шаблон является нежадным. Нежадный шаблон соответствует минимально возможной части искомой строки, а используемый по умолчанию жадный шаблон соответствует максимально возможной части искомой строки. Например, в строке "oooo" шаблон "o+?" соответствует одной букве "o", а шаблон "o+" соответствует всем буквам "o". |
. |
Соответствует любому отдельному знаку, кроме "\n". Для получения соответствия любому знаку, включая "\n", используйте шаблон "[\s\S]". |
(pattern) |
Часть выражения, соответствующая слову pattern и сохраняющая это совпадение. Сохраненное совпадение можно извлечь из полученной коллекции совпадений с помощью свойств $0…$9. Для получения соответствия знакам скобок "(" и ")" используйте "\(" или "\)". |
(?:pattern) |
Часть выражения, соответствующая слову pattern, но не сохраняющая данной совпадение для использования в дальнейшем. Это удобно использовать для объединения частей шаблона со знаком "или" (|). Например, выражение "industr(?:y|ies)" является более экономичным, чем выражение "industry|industries". |
(?=pattern) |
Часть выражения, выполняющая поиск с положительным просмотром вперед, который соответствует искомой строке в любой точке, где начинается строка, совпадающая с шаблоном pattern. Это сравнение выполняется без сохранения совпадения для возможного использования в дальнейшем. Например, шаблон "Windows (?=95|98|NT|2000)" соответствует слову "Windows" в последовательности "Windows 2000", но не слову "Windows" в последовательности "Windows 3.1". При поиске вперед знаки не обрабатываются, то есть после нахождения совпадения сразу же начинается поиск следующего совпадения, если только оно не включает знаки, входящие в положительный просмотр вперед. |
(?!pattern) |
Часть выражения, выполняющая поиск с отрицательным просмотром вперед, который соответствует искомой строке в любой точке, где начинается строка, не совпадающая с шаблоном pattern. Это сравнение выполняется без сохранения совпадения для возможного использования в дальнейшем. Например, шаблон "Windows (?!95|98|NT|2000)" соответствует слову "Windows" в последовательности "Windows 3.1", но не слову "Windows" в последовательности "Windows 2000". При поиске вперед знаки не обрабатываются, то есть после нахождения совпадения сразу же начинается поиск следующего совпадения, если только оно не включает знаки, входящие в положительный просмотр вперед. |
x|y |
Соответствует букве x или y. Например, "z|food" соответствует букве "z" или слову "food". "(z|f)ood" соответствует слову "zood" или слову "food". |
[xyz] |
Набор знаков. Совпадает с любым из знаков внутри скобок. Например, "[abc]" соответствует букве "a" в слове "plain". |
[^xyz] |
Отрицательный набор знаков. Соответствует любому знаку, не указанному в скобках. Например, "[^abc]" соответствует букве "p" в слове "plain". |
[a-z] |
Диапазон знаков. Соответствует любому знаку в указанном диапазоне. Например, "[a-z]" соответствует любой букве от "a" до "z" в нижнем регистре. |
[^a-z] |
Отрицательный диапазон знаков. Соответствует любому знаку, отсутствующему в указанном диапазоне. Например, "[^a-z]" соответствует любому знаку, не являющемуся буквой от "a" до "z". |
\b |
Соответствует границе слова, то есть позиции между словом и пробелом. Например, "er\b" соответствует "er" в слове "never", но не в слове "verb". |
\B |
Соответствует позиции, отличной от границы слова. Например, "er\B" соответствует "er" в слове "verb", но не в слове "never". |
\cx |
Соответствует управляющему символу, указанному с помощью x. Например, "\cM" соответствует "Control-M" или знаку возврата каретки. Значение x должно находиться в диапазоне от "A" до "Z" или от "a" до "z". В противном случае "c" считается буквенным символом "c". |
\d |
Соответствует знаку цифры. Является эквивалентом для "[0-9]". |
\D |
Соответствует любому знаку, не являющемуся цифрой. Является эквивалентом для "[^0-9]". |
\f |
Соответствует знаку подачи бланка. Является эквивалентом для "\x0c" и "\cL". |
\n |
Соответствует символу новой строки. Является эквивалентом для "\x0a" и "\cJ". |
\r |
Соответствует знаку возврата каретки. Является эквивалентом для "\x0d" и "\cM". |
\s |
Соответствует знаку пробела, включая пробел, табуляцию, подачу бланка и т. д. Является эквивалентом для "[ \f\n\r\t\v]". |
\S |
Соответствует любому знаку, не являющемуся пробелом. Является эквивалентом для "[^ \f\n\r\t\v]". |
\t |
Соответствует знаку табуляции. Является эквивалентом для "\x09" и "\cI". |
\v |
Соответствует знаку вертикальной табуляции. Является эквивалентом для "\x0b" и "\cK". |
\w |
Соответствует любому знаку в слове, включая знак подчеркивания. Является эквивалентом для "[A-Za-z0-9_]". |
\W |
Соответствует любому знаку, не являющемуся цифрой или буквой. Является эквивалентом для "[^A-Za-z0-9_]". |
\xn |
Соответствует n, где n — шестнадцатеричный escape-знак. Шестнадцатеричные escape-знаки должны иметь длину ровно две цифры. Например, "\x41" соответствует "A". "\x041" является эквивалентом для "\x04" и "1". Позволяет использовать в регулярных выражениях ASCII-коды. |
\num |
Соответствует num, где num — положительное целое число. Обратная ссылка на сохраненные совпадения. Например, "(.)\1" соответствует двум последовательным одинаковым знакам. |
\n |
Указывает на обратную ссылку или восьмеричный escape-знак. Если перед \n следует не менее n сохраненных частей выражений, n является обратной ссылкой. В противном случае n является восьмеричным escape-знаком, если n является цифрой в восьмеричном формате (0 – 7). |
\nm |
Указывает на обратную ссылку или восьмеричный escape-знак. Если перед \nm следует не менее nm сохраненных частей выражений, nm является обратной ссылкой. Если перед \nm следует не менее n сохраненных совпадений, n является обратной ссылкой, после которой стоит литерал m. Если ни одно из указанных условий не выполняется, \nm соответствует восьмеричному escape-знаку nm, когда n и m являются цифрами в восьмеричном формате (0 – 7). |
\nml |
Соответствует восьмеричному escape-знаку nml, когда n является цифрой в восьмеричном формате (0-3), а m и l являются цифрами в восьмеричном формате (0 – 7). |
\un |
Соответствует n, где n — это знак Юникода, выраженный в виде четырех шестнадцатеричных цифр. Например, "\u00A9" соответствует символу авторского права (©). |