Тестер регулярных выражений
Напишите шаблон и увидите каждое совпадение в контексте — без кнопок, движок — встроенный JavaScript RegExp браузера.
Результат совпадений
Как пользоваться
- Введите шаблон без слэшей и включите нужные флаги: совпадения обновляются по мере ввода, нажимать нечего.
- Вставьте текст для проверки. Каждое совпадение подсвечивается в панели результата, а в списке указаны его позиция, текст и группы захвата.
- Скопируйте все найденные значения сразу или скачайте их текстовым файлом — по одному совпадению на строку.
Пример
Шаблон и текст
(\w+)@(\w+)\.(\w+) Пишите ada@example.com или lin@example.org для деталей.
Совпадения
Совпадений: 2 #1 [7–22] ada@example.com 1: ada 2: example 3: com #2 [27–42] lin@example.org 1: lin 2: example 3: org
Первая строка — шаблон (слэши не нужны), остальное — тестовый текст. Диапазоны — смещения в тексте с нуля, не включая конец, — те же числа, что JavaScript сообщает в match.index. Глобальный поиск включён всегда, поэтому находятся все вхождения, хотя переключателя g нет.
Правила, ограничения и известные проблемы
- Движок — встроенный JavaScript RegExp браузера: без вариантов PCRE, Python, Go или RE2 и без выбора движка. \A, \z и встроенные флаги вроде (?i) не поддерживаются.
- Глобальный поиск включён всегда; доступны только флаги i, m, s и u. y (липкий), d (индексы) и v (наборы Unicode) не предлагаются.
- Слэши /…/ — только оформление: символ / внутри шаблона здесь экранировать не нужно, в отличие от литерала JavaScript. Надпись с флагами рядом — точная строка для повторного использования в коде.
- При синтаксической ошибке после локализованного префикса показывается сообщение самого браузера (на английском); формулировки в разных браузерах отличаются.
- Пустой тестовый текст не даёт результата — проверять нечего, поэтому шаблоны вроде ^$ здесь не проверить.
- Собирается до 2000 совпадений (тогда счётчик показывает 2000+), а в списке отображаются первые 200. Оба ограничения объявляются, а не усекают результат молча.
- Текст длиннее 100 000 символов всё равно обновляется по мере ввода, но с более длительной задержкой перед появлением результата.
- Катастрофический backtracking может подвесить вкладку: регулярное выражение JavaScript выполняется синхронно и не прерывается, поэтому тайм-аута нет. Не вставляйте недоверенные шаблоны и огромные тексты.
- \w, \b и \d работают только с ASCII даже с флагом u — для кириллических или арабских букв используйте \p{L} и флаг u. Без u конструкция \p{L} не ошибка: она молча превращается в поиск литерала.
- i использует простое свёртывание регистра Unicode, а не правила языка: турецкие İ и i не совпадают, а ß не сворачивается в SS.
- Диапазоны — смещения UTF-16 с нуля, не включая конец, поэтому эмодзи считается за два. Неучаствовавшая группа показывается как —; группа, совпавшая с пустой строкой, показывается пустой.
- Совпадения нулевой длины (\b, a*, (?=x)) отмечаются тонким маркером, а их диапазон выглядит как n–n.
- Копирование и скачивание содержат только найденные значения, по одному на строку, без номеров, диапазонов и групп. Поэтому совпадение с переводами строк занимает несколько строк.
- Нет предпросмотра замены, генератора кода, постоянных ссылок и сохранённых шаблонов: шаблон не покидает поле ввода и не попадает в URL.
Похожие инструменты
Когда шаблон уже работает, обычно переходят к этому.