Тестер регулярных выражений
Пишите выражение — совпадения и группы подсвечиваются в тексте сразу. Рядом — разбор по частям, замена, тест-кейсы и код для пяти языков. Проверка идёт в фоновом потоке, поэтому даже «взрывное» выражение не повесит страницу.
Бесплатно, без регистрации
Выражение, кейсы и текст до 200 КБ сохраняются только в этом браузере.
Как работает тестер
Подсветка в тексте
Выражение выполняется движком вашего браузера (ECMAScript RegExp) — ровно так, как его выполнит JavaScript в продукте. Совпадения подсвечиваются прямо в поле с текстом, группы подчёркиваются своим цветом; текст при этом можно править.
Группы и позиции
Для каждого совпадения — позиции начала и конца, номера и имена групп, их значения и позиции (как с флагом d). Без флага g ищется только первое совпадение — как у exec.
Замена, разбиение, тест-кейсы
Замена следует правилам GetSubstitution: $1, $<имя>, $&, $`, $', $$ — видно и общий результат, и замену каждого совпадения. Тест-кейсы проверяют строки, которые должны и не должны совпадать.
Разбор и код
Выражение разбирается на части с объяснением каждой: якоря, классы, квантификаторы (жадные и ленивые), группы, просмотр вперёд и назад, обратные ссылки, свойства Unicode. Код — для JavaScript, Python, Go, PHP, Java с переводом флагов и синтаксиса.
Стандарты и правила
Синтаксис и поведение — ECMAScript (ECMA-262) в версии вашего браузера: флаг v (ES2024) и группы-модификаторы (?i:…) (ES2025) работают там, где их поддерживает браузер. Код для других языков учитывает их отличия: Python re, Go regexp (RE2), PHP PCRE, Java java.util.regex.
g
- Свойство
- global
- Что делает
- все совпадения, а не только первое
i
- Свойство
- ignoreCase
- Что делает
- без учёта регистра
m
- Свойство
- multiline
- Что делает
- ^ и $ — начало и конец каждой строки текста
s
- Свойство
- dotAll
- Что делает
- точка совпадает и с переводом строки
u
- Свойство
- unicode
- Что делает
- Unicode: \p{…}, \u{…}, эмодзи — один символ, строгий синтаксис
v
- Свойство
- unicodeSets
- Что делает
- как u, плюс вложенные классы и операции -- и && (ES2024)
y
- Свойство
- sticky
- Что делает
- совпадение только с позиции lastIndex, без поиска дальше
d
- Свойство
- hasIndices
- Что делает
- позиции начала и конца каждой группы (match.indices)
R1 · Вложенные квантификаторы — риск зависания
- Пример
- (a+)+ (\w+\s?)*
- Что не так
- Внутренний повтор может закончить итерацию там же, где начинается следующая итерация внешнего: строку можно разрезать экспоненциально многими способами. На тексте без совпадения движок перебирает их все. Уберите вложенность (a+ вместо (a+)+) или сделайте границу итераций обязательной.
R2 · Пересекающиеся альтернативы под повтором — риск зависания
- Пример
- (a|a)* (\w|\d)+
- Что не так
- Две альтернативы совпадают с одним и тем же символом, и группа повторяется: каждый символ можно отнести к любой из них, вариантов — 2^n. Объедините альтернативы в один класс ([\w] вместо (\w|\d)) или сделайте их взаимоисключающими.
R3 · Соседние повторы по одним символам — медленно на длинном тексте
- Пример
- \d+\d+ .*.*
- Что не так
- Два неограниченных повтора подряд делят между собой одни и те же символы: при неудаче движок пробует все границы между ними (полиномиальный рост, n² и больше). Оставьте один повтор или поставьте между ними обязательный разделитель.
Эвристики ищут классические формы и не доказывают безопасность: защиту даёт выполнение с таймаутом. Для серверного кода с пользовательским вводом выбирайте движки с линейным временем (RE2) или ограничивайте длину входа.
Email (практичный)
- Что не проверяет
- Ловит опечатки, а не проверяет существование адреса. RFC 5322 допускает больше (кавычки, IP в скобках), кириллические домены нужно сначала перевести в punycode. Надёжная проверка — письмо с подтверждением.
URL http(s)
- Что не проверяет
- Только http и https с доменом (не localhost и не IP). Для разбора частей адреса в коде надёжнее new URL().
IPv4
- Что не проверяет
- Четыре числа 0–255 без ведущих нулей. Маску (/24) и порт не принимает.
IPv6
- Что не проверяет
- Полная и сокращённая (::) запись. Не принимает зону (%eth0) и встроенный IPv4 (::ffff:1.2.3.4).
UUID (RFC 9562)
- Что не проверяет
- Версии 1–8 и вариант RFC 9562. Nil и Max UUID (нули и f) не проходят — добавьте их отдельно, если нужны.
Дата ISO 8601 (ГГГГ-ММ-ДД)
- Что не проверяет
- Проверяет формат, а не календарь: 2026-02-31 пройдёт. Существование даты проверяйте в коде.
Дата и время ISO 8601
- Что не проверяет
- Профиль RFC 3339: обязательный часовой пояс (Z или ±ЧЧ:ММ). Секунда координации 60 не принимается.
Телефон KZ/RU (+7)
- Что не проверяет
- Формат +7/8 и 10 цифр с пробелами, скобками и дефисами. Не проверяет, что код оператора существует; для хранения приводите номер к +7XXXXXXXXXX.
ИИН/БИН (12 цифр, только формат)
- Что не проверяет
- Только 12 цифр. Контрольная цифра и дата рождения в ИИН не проверяются — регулярное выражение их не посчитает, это делается в коде.
Цвет HEX
- Что не проверяет
- #RGB, #RGBA, #RRGGBB и #RRGGBBAA, как в CSS.
Slug (адрес страницы)
- Что не проверяет
- Латиница в нижнем регистре, цифры и одиночные дефисы между словами.
SemVer 2.0.0
- Что не проверяет
- Официальное выражение с semver.org: группы — major, minor, patch, pre-release, build.
JWT (форма)
- Что не проверяет
- Три части base64url через точку — только форма. Подпись и сроки проверяет библиотека JWT на сервере.
Ограничения
- Поведение — движка этого браузера: в старом браузере новые возможности (флаг v, модификаторы) недоступны, а в другом языке то же выражение может работать иначе — смотрите заметки на вкладке «Код».
- Подсветка в тексте — до 300 КБ и до 3000 совпадений; список — до 5000 совпадений, текст — до 5 МБ.
- Разбор по частям объясняет синтаксис, но не проверяет смысл: «email-подобное» выражение не гарантирует существующий адрес.
- Шаблоны проверяют формат, а не содержание: даты не сверяются с календарём, ИИН/БИН — с контрольной цифрой, JWT — с подписью.
Приватность
- Выражение и текст обрабатываются в вашем браузере, в фоновом потоке этой страницы; текст никуда не отправляется, адрес страницы не меняется. Выражение, флаги и счётчики уходят к нам только в краткой сводке, если вы сами приложите её к заявке.
- Выражение, флаги, тест-кейсы и текст до 200 КБ хранятся только в этом браузере (localStorage); больший текст живёт только в памяти вкладки. «Сбросить всё» удаляет данные.
- В аналитику уходит только факт копирования или скачивания кода (язык) и выбор шаблона из библиотеки (его идентификатор) — без выражений и текста.
- Результат уходит к нам, только если вы сами оставите заявку и не снимете галочку «Приложить результат» — что именно уйдёт, видно в форме. Ключи, пароли и токены в сводку не попадают.
Похожие инструменты
Все инструменты · 40
Сжатие картинок в WebP и AVIFПеретащите картинки — WebP, AVIF или JPEG по качеству или целевому размеру в КБ, шторка «до/после» 1:1, srcset и <picture>, пакетный ZIP. Всё в браузере.
Предпросмотр ссылок (Open Graph)Вставьте HTML или заполните поля — и посмотрите, как ссылка выглядит в Telegram, WhatsApp, VK, Facebook, X, LinkedIn и Slack. Проверка og:image, длины текста и twitter:card, готовый блок <head>.
Конвертер JSON, YAML и CSVПеревод между JSON, YAML и CSV с форматированием, сортировкой ключей, проверкой синтаксиса с точным местом ошибки и деревом данных.
Cron: расписание по-человеческиCron-выражение ↔ понятный текст, ближайшие запуски в вашем часовом поясе, конструктор расписания и варианты для Linux, Quartz, GitHub Actions и Kubernetes.
Base64, хеши, UUID и ULIDBase64/base64url, Base32, HEX, URL и HTML в обе стороны, хеши текста и файлов любого размера (SHA-256, SHA-3, BLAKE3, MD5, CRC-32), HMAC, сверка контрольных сумм, генерация и разбор UUID v4/v7, ULID и NanoID.Нужна валидация данных, которой можно доверять?
Спроектируем проверки форм и импорта на клиенте и сервере, с тестами и без хрупких регулярных выражений там, где нужен разбор. Объём и стоимость — после брифа.
- Первый короткий разговор бесплатный — выбираем формат работы
- NDA — по вашему или нашему шаблону
- Стоимость — после брифа и согласования объёма