ToolHub
View All Posts

Шпаргалка по регулярным выражениям: полный справочник

Регулярные выражения (regex) являются одним из самых мощных и универсальных инструментов в арсенале разработчика. Они позволяют сопоставлять, искать и манипулировать текстом с помощью точных шаблонов, которые было бы практически невозможно выразить в обычном коде. Независимо от того, проверяете ли вы пользовательский ввод, парсите логи, извлекаете данные из документов или выполняете поиск и замену в редакторе кода, regex предоставляет лаконичный и эффективный способ решения задач обработки текста.

Что такое регулярные выражения?

Базовый синтаксис

СимволЗначениеПример
.Любой символ, кроме перевода строки.
a, 1, @\Экранирует специальный символ
\..|
Чередование (ИЛИ)a|ba или b
()Группа захвата(abc)
abc^Начало строки
^HelloHello world$
Конец строкиworld$Hello world
\bГраница слова\bcat\b
cat\BНе граница слова

Продвинутые границы

СовпадениеСимволЗначение
\Bcat\Blocate\A
Начало строки (не зависит от флага m)\AStartStart
\ZКонец строки (перед последним переводом строки)End\Z
End\zКонец строки (абсолютный)
End\zEnd\d
Цифра\d0-9

Предопределённые классы символов

СимволЗначениеСимвол
\wСимвол слова (буква, цифра, подчёркивание)\w
a-z, A-Z, 0-9, _\sПробельный символ
\sпробел, табуляция, перевод строки\D
Не цифра\DЛюбой символ, кроме 0-9

Пользовательские классы символов

ЗначениеШаблонНазначение
\WНе символ слова\W
Любой символ, кроме букв, цифр, _\SНе пробельный символ
\SЛюбой символ, кроме пробельных[abc]
Любой символ из a, b или c[abc]a, b, c
[^abc]Любой символ, кроме a, b или c[^abc]

Якоря и границы

Эта шпаргалка охватывает каждый основной синтаксический элемент regex от базовых символов до продвинутых техник, таких как Lookahead и обратные ссылки. Каждый раздел включает практические примеры и распространённые случаи использования, которые вы можете немедленно применить.

Жадные и ленивые квантификаторы

Якоря сопоставляют позиции в строке, а не символы. Они утверждают, что что-то истинно о позиции, но не потребляют символы. Якоря необходимы для проверки того, что шаблоны появляются в определённых позициях, а не где-либо в строке.

Захватывающие группы

Классы символов — это фундаментальные строительные блоки regex, позволяющие сопоставлять определённые категории символов. Вместо перечисления каждого возможного символа вы можете использовать класс символов для сопоставления с целым диапазоном или категорией.

Незахватывающие группы

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

Именованные группы

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

Обратные ссылки

Lookahead и Lookbehind (коллективно называемые Lookaround) — это утверждения нулевой ширины, которые проверяют, что текст существует (или не существует) после или до текущей позиции, не потребляя символы. Они позволяют создавать сложные условия сопоставления, которые были бы невозможны с помощью только обычных совпадений.

Позитивный и негативный Lookahead

Флаги изменяют поведение всего шаблона regex. Они управляют чувствительностью к регистру, многострочным сопоставлением, обработкой пробелов и многим другим.

Классы символов

Позитивный и негативный Lookbehind

Вот проверенные, готовые к использованию шаблоны regex для распространённых задач валидации. Они были протестированы на миллионах реальных входных данных и уравновешивают точность с практичностью.

Практические примеры Lookahead

Нужно протестировать или отладить шаблон regex? Попробуйте наш бесплатный онлайн-тестер регулярных выражений с подсветкой совпадений в реальном времени и объяснением шаблонов.

Совет профессионала: используйте \b для границ слов при сопоставлении целых слов. Без \b, шаблон «cat» будет сопоставлять «cat» в «category», «scatter» и «concatenate». С \b, \bcat\b сопоставляет только изолированное слово «cat».

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

Группы и захват

Hello
<.+><.+?>
». Ленивые квантификаторы добавляют ? после любого квантификатора.

<=...) утверждает, что текст существует до. Негативный Lookbehind (?Тестер регулярных выраженийRegex Cheat Sheet

Lookahead и Lookbehind

Валидация email

Простые шаблоны email, такие как /\S+@\S+\.\S+/, работают для базового обнаружения, но могут иметь ложные срабатывания. Более точный шаблон: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/. Однако regex не может идеально валидировать все email-адреса в соответствии со спецификацией RFC 5322. Для критически важной валидации отправьте письмо для подтверждения.

Валидация URL

Regex может работать по-разному в разных языках программирования из-за различий в движках regex. Распространённые проблемы включают: экранирование строк (возможно, потребуется двойное экранирование обратных слешей), флаги по умолчанию (некоторые движки используют многострочный режим по умолчанию) и отсутствие поддержки продвинутых функций, таких как Lookbehind. Всегда тестируйте regex в целевом окружении.

Валидация даты

Наиболее важные символы: . (любой символ), * (ноль или более), + (один или более), ? (ноль или один, или ленивый), ^ (начало строки), $ (конец строки), \d (цифра), \w (символ слова), \s (пробельный символ), [] (класс символов), () (группа захвата), | (чередование) и \ (экранирование). Освоение этих символов покрывает 90% всех потребностей regex.

Валидация телефона

Lookahead and lookbehind are zero-width assertions that check for patterns without consuming characters. (?=pattern) is a positive lookahead that matches if the pattern follows. (?<=pattern) is a positive lookbehind that matches if the pattern precedes. Negative versions use ! instead of =.

Валидация пароля

Add the i flag after the closing delimiter to make the entire pattern case-insensitive. In JavaScript, use /pattern/i. In Python, use re.IGNORECASE or re.I as a flag. You can also use (?i) inline to make specific portions case-insensitive.

ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.