Как пользоваться: Тестер регулярных выражений
- Введите шаблон между слешами или выберите его в списке Частые шаблоны. Можно также вставить готовый литерал, например
/\d+/g. - Включайте флаги, например
g(все совпадения),i(без учёта регистра) илиm(многострочный режим). - Вставьте текст в поле Тестовая строка — все совпадения подсвечиваются по мере ввода.
- Проверьте вкладку Совпадения с позициями и группами захвата или откройте Замена, чтобы посмотреть результат подстановки.
- Нажмите Копировать, чтобы скопировать регулярное выражение в виде
/шаблон/флаги. Шаблон и флаги также сохраняются в адресе страницы, так что ссылкой можно поделиться.
Что такое тестер регулярных выражений?
Регулярное выражение (regex) — это компактный язык шаблонов для поиска и преобразования текста: проверки поля email, извлечения ID из логов, переименования файлов или очистки данных. Поскольку один символ может изменить то, что совпадает с шаблоном, подбирать regex методом проб прямо в коде медленно. Тестер регулярных выражений мгновенно показывает, что совпадает с шаблоном, какие группы захвата заполняются и что получится после замены.
Этот тестер использует встроенный движок регулярных выражений вашего браузера JavaScript (ECMAScript), поэтому результаты точно совпадают с тем, что выдают String.prototype.match, matchAll, replace и RegExp.test в Chrome, Firefox, Safari, Node.js и Deno. Шаблоны выполняются в фоновом воркере с ограничением по времени, поэтому зациклившийся шаблон не может заморозить страницу.
Флаги регулярных выражений JavaScript
| Флаг | Название | Действие |
|---|---|---|
g | global | Находит все совпадения, а не останавливается на первом. |
i | ignoreCase | /abc/i совпадает с «ABC». |
m | multiline | ^ и $ совпадают в начале и конце каждой строки. |
s | dotAll | . также совпадает с переносами строк. |
u | unicode | Считает суррогатные пары (эмодзи) одним символом и включает экранирование свойств \p{…}. |
y | sticky | Совпадает только в позиции lastIndex — полезно при написании токенизаторов. |
Группы захвата, именованные группы и замены
Круглые скобки захватывают текст, который они совпадают. В (\d{4})-(\d{2}) первая группа — это год, вторая — месяц. Именованные группы делают шаблон самодокументируемым: (?<year>\d{4}) доступна как match.groups.year в коде и как $<year> в строке замены. Например, при замене (?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2}) на $<d>/$<m>/$<y> строка 2026-10-25 превратится в 25/10/2026. Используйте (?:…), если нужна группировка без захвата.
Катастрофический бэктрекинг
Шаблоны с вложенными квантификаторами, например (a+)+$ или (\w+\s?)*$, могут работать экспоненциально долго на входных данных, которые почти совпадают. Это классическая причина зависания браузеров и уязвимостей ReDoS на серверах. Если шаблон выполняется дольше 1,5 секунды, здесь его остановят и отметят. Исправить это можно, сделав альтернативы взаимно исключающими, заменив .* на отрицательный класс вроде [^"]* или зафиксировав шаблон якорями.
Советы по надёжным шаблонам
- Привязывайте шаблоны валидации якорями
^…$, иначе\d{5}также «одобрит» строкуabc123456. - Экранируйте метасимволы, если они нужны как обычные символы:
\.\?\(\[\$. - Предпочитайте конкретные классы символов вместо
.*: они быстрее и точнее отражают ваш замысел. - Regex плохо подходит для вложенных форматов, таких как HTML или JSON, — используйте парсер (или наш JSON Formatter).
- Сравниваете текст до и после замены во всём документе? Вставьте оба варианта в Diff Checker.
Распространённые шаблоны регулярных выражений
Проверенные регулярные выражения с пояснениями и примерами кода для JavaScript, Python и PHP:
- Email-адрес
- URL (http и https)
- IPv4-адрес
- Номер телефона США
- Международный номер телефона (E.164)
- ZIP-код США
- Почтовый код Великобритании
- Канадский почтовый индекс
- Дата (YYYY-MM-DD)
- Дата (MM/DD/YYYY)
- Дата (ДД/ММ/ГГГГ)
- Время (24-часовой ЧЧ:ММ)
- Время (12-часовой формат с AM/PM)
- HEX-код цвета
- Сложный пароль
- Имя пользователя
- URL slug
- UUID
- Номер кредитной карты
- Номер социального страхования США
- Доменное имя
- MAC-адрес
- Семантическое версионирование (semver)
- Дата и время ISO 8601
- JSON Web Token (JWT)
- Regex для Base64 строки
- Имя файла изображения
- ID видео YouTube из URL
- Поиск email-адресов в тексте
- Поиск всех URL в тексте
- Поиск хэштегов
- Поиск @упоминаний
- Поиск HTML-тегов (regex)
- Поиск чисел в тексте
- Только цифры
- Десятичное число
- Только буквы
- Буквенно-цифровой
- Обрезка пробелов по краям
- Удаление лишних пробелов
- Поиск повторяющихся слов
- Удаление HTML-тегов
Часто задаваемые вопросы
Какой диалект регулярных выражений использует этот тестер?
\A/\Z и встроенных модификаторов вроде (?i).Почему мой шаблон находит только одно совпадение?
g (global) JavaScript останавливается на первом совпадении. Включите g, чтобы найти все. Тестер также напомнит, если флаг выключен.Как искать совпадения на нескольких строках?
m, чтобы ^ и $ работали для каждой строки, и флаг s (или [\s\S]), если . должна также совпадать с символами перевода строки.Тестовый текст сохраняется или загружается куда-то?
Какой regex подходит для проверки email-адресов?
^[^\s@]+@[^\s@]+\.[^\s@]+$ (или пресет «Email-адрес»). Полностью соответствующие RFC 5322 шаблоны получаются огромными и всё равно не скажут, существует ли почтовый ящик, — для этого отправьте письмо с подтверждением.