Перейти к содержимому
useToolz онлайн-инструменты

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

11.01.2026 1 мин. чтения

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

Регулярные выражения (regular expressions, regex) — это язык описания шаблонов для поиска и обработки текста. Они позволяют находить подстроки по сложным правилам, проверять формат данных, извлекать информацию и выполнять замены. Регулярные выражения поддерживаются практически всеми языками программирования: JavaScript, Python, PHP, Java, Go, C# и другими.

Регулярное выражение — это строка, состоящая из обычных символов и метасимволов (символов со специальным значением). Например, выражение \d{3}-\d{2}-\d{2} описывает шаблон телефонного номера в формате 123-45-67.

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

Вот основные элементы синтаксиса регулярных выражений:

  • . — любой одиночный символ (кроме переноса строки).
  • \d — любая цифра (эквивалент [0-9]).
  • \w — буква, цифра или подчёркивание (эквивалент [a-zA-Z0-9_]).
  • \s — пробельный символ (пробел, табуляция, перенос строки).
  • ^ — начало строки.
  • $ — конец строки.
  • * — ноль или более повторений предыдущего элемента.
  • + — одно или более повторений.
  • ? — ноль или одно повторение (элемент необязателен).
  • {n} — ровно n повторений.
  • {n,m} — от n до m повторений.
  • [abc] — любой из символов в квадратных скобках.
  • [^abc] — любой символ, кроме указанных.
  • (group) — группа захвата.
  • | — логическое «или».

Распространённые паттерны

Валидация email

Базовый шаблон для проверки email-адреса:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Этот шаблон проверяет наличие символов до @, доменного имени и домена верхнего уровня (минимум 2 символа). Для продакшен-кода рекомендуется использовать более строгие библиотеки валидации, так как полное regex-выражение для email по RFC 5322 крайне громоздко.

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

Российский номер в формате +7 (XXX) XXX-XX-XX:

^\+7\s?\(?\d{3}\)?\s?\d{3}[-\s]?\d{2}[-\s]?\d{2}$

Валидация URL

Базовая проверка HTTP/HTTPS URL:

^https?:\/\/[\w\-]+(\.[\w\-]+)+[\/\w\-._~:?#\[\]@!$&'()*+,;=%]*$

IPv4-адрес

Проверка корректности IPv4-адреса (от 0.0.0.0 до 255.255.255.255):

^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$

Флаги регулярных выражений

Флаги изменяют поведение всего регулярного выражения:

  • g (global) — искать все совпадения, а не только первое.
  • i (case-insensitive) — игнорировать регистр символов.
  • m (multiline) — символы ^ и $ работают для каждой строки, а не всего текста.
  • s (dotAll) — точка . совпадает с любым символом, включая перенос строки.
  • u (unicode) — корректная обработка Unicode-символов (важно для кириллицы).

Группы захвата и обратные ссылки

Круглые скобки () создают группы захвата — вы можете извлечь часть совпадения:

(\d{2})\.(\d{2})\.(\d{4}) — для даты в формате ДД.ММ.ГГГГ вы получите день, месяц и год как отдельные группы.

Именованные группы делают код читабельнее:

(?<day>\d{2})\.(?<month>\d{2})\.(?<year>\d{4})

Группа без захвата (?:...) нужна для группировки элементов без сохранения в результат.

Look-ahead и look-behind

Эти конструкции позволяют проверять контекст без включения его в результат совпадения:

  • (?=...) — положительный look-ahead. Пример: \d+(?= руб) — число, за которым следует « руб».
  • (?!...) — отрицательный look-ahead. Пример: \d+(?! руб) — число, за которым НЕ следует « руб».
  • (?<=...) — положительный look-behind. Пример: (?<=\$)\d+ — число после знака доллара.
  • (?<!...) — отрицательный look-behind. Пример: (?<!\$)\d+ — число, перед которым НЕ стоит доллар.

Практические советы

  • Начинайте с простого. Пишите regex поэтапно, проверяя каждую часть. Не пытайтесь написать идеальное выражение за один раз.
  • Используйте тестер. Наш тестер регулярных выражений позволяет проверять шаблоны в реальном времени с подсветкой совпадений.
  • Будьте осторожны с жадными квантификаторами. .* по умолчанию захватывает максимально возможную подстроку. Используйте ленивый вариант .*?, если нужно минимальное совпадение.
  • Не изобретайте велосипед. Для валидации email, URL и других стандартных форматов используйте проверенные библиотеки, а не собственные regex.
  • Комментируйте сложные выражения. Используйте флаг x (verbose mode), чтобы добавлять пробелы и комментарии внутри regex.

Часто задаваемые вопросы

Где чаще всего используются регулярные выражения?

В валидации пользовательского ввода (формы на сайтах), поиске и замене в текстовых редакторах (VS Code, Sublime Text), парсинге логов и данных, маршрутизации URL в веб-фреймворках и обработке строк в скриптах. Также regex полезны при работе с JSON-данными для поиска определённых паттернов.

Могут ли регулярные выражения быть медленными?

Да, плохо написанные regex могут вызвать катастрофический откат (catastrophic backtracking), когда время выполнения растёт экспоненциально. Избегайте вложенных квантификаторов вроде (a+)+ и проверяйте производительность на длинных строках. Это особенно важно на сервере, где regex обрабатывает пользовательский ввод.

Как работать с кириллицей в regex?

Используйте Unicode-диапазон [а-яА-ЯёЁ] или Unicode-категорию \p{Cyrillic} (если движок поддерживает Unicode properties). В JavaScript не забудьте флаг u. Класс \w по умолчанию не включает кириллицу.

Как проверить регулярное выражение онлайн?

Откройте наш онлайн-тестер regex, введите выражение и тестовый текст. Инструмент в реальном времени подсвечивает все совпадения, показывает группы захвата и объясняет ошибки. Это бесплатно и не требует регистрации.

Увеличенное изображение