Справочник по синтаксису регулярных выражений

Регулярное выражение, также известное как шаблонное выражение, представляет собой текстовый шаблон, который обычно используется для поиска, замены и контроля текста. Оно включает в себя буквы от a до z, а также некоторые специальные мета-символы. Регулярные выражения широко применяются, изначально они были популяризированы в Unix, а затем получили широкое распространение в Scala, PHP, C#, Java, C++, Objective-c, Perl, Swift, VBScript, Javascript, Ruby и Python и других языках. Изучение регулярных выражений фактически является изучением гибкого логического мышления, которое позволяет контролировать строки с помощью простых и быстрых методов.
Символ регулярного выражения Описание
\ Обозначает следующий символ как специальный символ, символ в своем буквальном значении, обратную ссылку или восьмеричный экранирующий символ. Например, “n" соответствует символу "n". "\n" соответствует символу новой строки. Строка "\\" соответствует "\", а "\(" соответствует "(".
^ Соответствует началу входной строки. Если у объекта RegExp установлен атрибут Multiline, ^ также соответствует позиции после “\n" или "\r".
$ Соответствует концу входной строки. Если у объекта RegExp установлен атрибут Multiline, $ также соответствует позиции перед “\n" или "\r".
* Соответствует предыдущему подвыражению ноль или более раз. Например, zo* соответствует “z" и "zoo". * эквивалентен {0,}.
+ Соответствует предыдущему подвыражению один или более раз. Например, “zo+" соответствует "zo" и "zoo", но не соответствует "z". + эквивалентен {1,}.
? Соответствует предыдущему подвыражению ноль или один раз. Например, “do(es)?" может соответствовать "does" или "do" в "does". ? эквивалентен {0,1}.
{n} n - это неотрицательное целое число. Соответствует определенному количеству n раз. Например, “o{2}" не может соответствовать "Bob" в "Bob", но может соответствовать двум o в "food".
{n,} n - это неотрицательное целое число. Соответствует не менее n раз. Например, “o{2,}" не может соответствовать "Bob" в "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", используйте шаблон вроде "(.|\n)".
(pattern) Соответствует шаблону pattern и извлекает это соответствие. Извлеченное соответствие можно получить из коллекции Matches, в VBScript используется коллекция SubMatches, в JScript используются свойства $0…$9. Чтобы соответствовать символам круглой скобки, используйте “\(" или "\)".
(?:pattern) Соответствует шаблону pattern, но не извлекает результат этого соответствия, то есть это не извлекающее соответствие, и оно не сохраняется для последующего использования. Это полезно при использовании символа "или" “(|)" для комбинирования различных частей шаблона. Например, "industr(?:y|ies)" является более компактным выражением, чем "industry|industries".
(?=pattern) Проверка наличия соответствия впереди, она соответствует строке, начинающейся с любой строки, соответствующей шаблону pattern. Это не извлекающее соответствие, то есть оно не сохраняется для последующего использования. Например, “Windows(?=95|98|NT|2000)" может соответствовать "Windows" в "Windows2000", но не может соответствовать "Windows" в "Windows3.1". Проверка не потребляет символы, то есть после возникновения совпадения поиск следующего совпадения начинается сразу после предыдущего совпадения, а не после символов, включающих проверку.
(?!pattern) Отрицательная проверка впереди, она соответствует строке, начинающейся с любой строки, не соответствующей шаблону pattern. Это не извлекающее соответствие, то есть оно не сохраняется для последующего использования. Например, “Windows(?!95|98|NT|2000)" может соответствовать "Windows" в "Windows3.1", но не может соответствовать "Windows" в "Windows2000". Проверка не потребляет символы, то есть после возникновения совпадения поиск следующего совпадения начинается сразу после предыдущего совпадения, а не после символов, включающих проверку.
(?<=pattern) Проверка наличия обратной уверенности, аналогичная проверке наличия впереди, только направление противоположное. Например, “(?<=95|98|NT|2000)Windows" может соответствовать "Windows" в "2000Windows", но не может соответствовать "Windows" в "3.1Windows".
(?<!pattern) Отрицательная обратная проверка, аналогичная отрицательной проверке впереди, только направление противоположное. Например, “(?<!95|98|NT|2000)Windows" может соответствовать "Windows" в "3.1Windows", но не может соответствовать "Windows" в "2000Windows".
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", но не может соответствовать "er" в "verb".
\B Соответствует не границе слова. “er\B" может соответствовать "er" в "verb", но не может соответствовать "er" в "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 - это шестнадцатеричное значение экранирования. Шестнадцатеричное значение экранирования должно быть фиксированной длины в два числа. Например, “\x41" соответствует "A". "\x041" эквивалентно "\x04&1". В регулярных выражениях можно использовать ASCII-код.
\num Соответствует num, где num - это положительное целое число. Для ссылки на извлеченное соответствие. Например, “(.)\1" соответствует двум последовательным одинаковым символам.
\n Обозначает восьмеричное значение экранирования или обратную ссылку. Если n было хотя бы n извлеченных подвыражений, то n является обратной ссылкой. В противном случае, если n является восьмеричной цифрой (0-7), то n является восьмеричным экранированием.
\nm Обозначает восьмеричное значение экранирования или обратную ссылку. Если nm имело хотя бы nm извлеченных подвыражений, то nm является обратной ссылкой. Если nm имело по крайней мере n извлеченных подвыражений, то n является обратной ссылкой на символ, за которым следует m. Если оба условия не соблюдаются, если n и m обе восьмеричные цифры (0-7), тогда nm будет соответствовать восьмеричному экранированию nm.
\nml Если n - восьмеричная цифра (0-3) и m и l - восьмеричные цифры (0-7), то соответствовать восьмеричному экранированию nml.
\un Соответствует n, где n - этоUnicode-символ, представленный четырьмя шестнадцатеричными цифрами. Например, \u00A9 соответствует символу авторского права (©).
Распространенные регулярные выражения
Имя пользователя /^[a-z0-9_-]{3,16}$/
Пароль /^[a-z0-9_-]{6,18}$/
Пароль 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (содержит цифры/верхний регистр/нижний регистр/символы, должно быть все четыре, более 8 символов)
Шестнадцатеричное значение /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
Электронная почта /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ или \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ или [a-zA-z]+://[^\s]*
IP адрес /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ или ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
HTML тэги /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ или <(.*)(.*)>.*<\/\1>|<(.*) \/>
Удаление кода \ комментариев (?<!http:|\S)//.*$
Соответствие двубайтным символам (включая китайские символы) [^\x00-\xff]
Китайские символы (символы) [\u4e00-\u9fa5]
Диапазон китайских символов в кодировке Unicode /^[\u2E80-\u9FFF]+$/
Китайские и полный знак препинания (символы) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
Дата (год-месяц-день) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
Дата (месяц/день/год) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
Время (часы:минуты, 24-часовой формат) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
Фиксированный телефонный номер в материковом Китае (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Номер мобильного телефона в материковом Китае 1\d{10}
Почтовый индекс в материковом Китае [1-9]\d{5}
Номер удостоверения личности в материковом Китае (15 или 18 цифр) \d{15}(\d\d[0-9xX])?
Неотрицательное целое число (положительное число или ноль) \d+
Положительное целое число [0-9]*[1-9][0-9]*
Отрицательное целое число -[0-9]*[1-9][0-9]*
Целое число -?\d+
Десятичное число (-?\d+)(\.\d+)?
Пустая строка \n\s*\r или \n\n(editplus) или ^[\s\S ]*\n
QQ номер [1-9]\d{4,}
Слово, не содержащее abc \b((?!abc)\w)+\b
Соответствие пробельным символам в начале и конце ^\s*|\s*$
Редактировать часто используемые
Ниже приведены некоторые замены для специальных китайских символов (editplus)
^[0-9].*\n
^[^第].*\n
^[习题].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

Справочник по синтаксису регулярных выражений - Полезные приемы и синтаксис регулярных выражений

Регулярные выражения являются мощным инструментом обработки текста, данная страница предоставляет вам справочник по синтаксису регулярных выражений, чтобы помочь вам быстро ознакомиться с основным синтаксисом регулярных выражений, модификаторами, подвыражениями, жадным и нежадным режимами и т. д.

Основной синтаксис регулярных выражений

Регулярные выражения используются для описания правил шаблона строки, распространенный основной синтаксис включает:

Распространенные модификаторы регулярных выражений

Модификаторы регулярных выражений изменяют правила соответствия регулярного выражения, распространенные модификаторы включают:

Жадный и нежадный режимы

В регулярных выражениях квантификаторы по умолчанию являются жадными, они будут стараться соответствовать как можно большему количеству символов. Режим нежадности используется путем добавления ? после квантификатора, примеры:

Подвыражения и группировка

Подвыражения в регулярных выражениях определяются с помощью круглых скобок (()), часто используются для извлечения соответствующих частей. Группировка осуществляется с помощью символа "|". Например:

Быстрая проверка регулярных выражений

Вот быстрая справка по распространённым регулярным выражениям:

Функция Регулярное выражение
Совпадение цифры \d
Совпадение не цифры \D
Совпадение буквы [a-zA-Z]
Совпадение любого символа .
Совпадение пробельного символа \s

Сценарии использования регулярных выражений

Регулярные выражения широко используются в следующих ситуациях:

Советы по изучению регулярных выражений

Используйте наш справочник по синтаксису регулярных выражений прямо сейчас, чтобы повысить свою эффективность в написании регулярных выражений и улучшить возможности обработки текста!

Ваши шаги:
Выбрать язык