В этой статье
Что такое регулярное выражение?
Регулярное выражение (regex или regexp) — это последовательность символов, задающая шаблон поиска. Регулярные выражения используются для поиска, сопоставления, извлечения, замены и валидации текста. Поддержка regex реализована нативно практически во всех языках программирования — это незаменимый инструмент любого разработчика.
Regex может быть как простым, например \d+ (одна или более цифр), так и сложным — с опережающими проверками, обратными ссылками и именованными группами. Несмотря на гибкость, сложные регулярные выражения трудно читать и поддерживать; тестер regex помогает создавать и проверять шаблоны в интерактивном режиме.
Как работает наш тестер regex
Тестер regex обеспечивает сопоставление в реальном времени с визуальной подсветкой по мере ввода.
- Живое сопоставление — подсвечивает все совпадения в тестовой строке по мере ввода шаблона
- Поддержка флагов — переключайте флаги global, case-insensitive, multiline и dotAll
- Отображение групп захвата — показывает захваченные группы и именованные группы для сложных шаблонов
Попробуйте бесплатно — без регистрации
Тестировать регулярное выражение →Когда использовать тестер regex
Тестер regex полезен всякий раз, когда нужно разработать или отладить шаблон перед его встраиванием в код.
- Валидация форм — создавайте и тестируйте шаблоны для проверки email, телефона, почтового индекса или пользовательских полей ввода
- Разбор логов — создавайте regex для извлечения полей из строк логов перед обработкой с помощью grep или awk
- Извлечение данных — тестируйте шаблоны для скрапинга или разбора структурированных данных из текста или HTML
Частые вопросы
В чём разница между жадными и ленивыми квантификаторами?
Жадные квантификаторы (*, +, ?) захватывают как можно больше. Ленивые квантификаторы (*?, +?, ??) захватывают как можно меньше. Например, для строки <a>text</a> шаблон <.*> совпадёт со всей строкой (жадно), а <.*?> — только с <a> (лениво). Ленивые квантификаторы необходимы при разборе HTML или вложенных структур.
Как сопоставить буквальную точку или другой специальный символ в regex?
Экранируйте символ обратным слешем: \. соответствует буквальной точке, \* — буквальной звёздочке. Специальные символы, требующие экранирования: . * + ? ^ $ { } [ ] | ( ) \. Если нужно сопоставить любой из них буквально, всегда ставьте перед ним \.
Почему мой regex работает по-разному в JavaScript и Python?
Разные языки реализуют несколько отличающиеся диалекты regex. Основные отличия: Python использует (?P<name>) для именованных групп, а JavaScript — (?<name>); поддержка просмотра назад varies; некоторые возможности, такие как \K (keep), есть в PCRE, но не в JavaScript. Всегда тестируйте regex в контексте целевого языка.