Тестер регулярных выражений

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

Как пользоваться

Введите шаблон между косыми чертами — без самих черт, как в записи /шаблон/флаги. Флаги включаются кнопками под полем. Текст для проверки — в поле «Текст»: совпадения подсвечиваются прямо в нём, соседние — разным цветом, а пустые совпадения отмечены вертикальной чертой.

В таблице — каждое совпадение с позицией (номер символа с нуля, как match.index) и значения групп. Включите «Замену», чтобы увидеть результат replace(): в строке замены работают $1, $<имя> и $&.

Выражение выполняется в вашем браузере тем же движком, что и в коде, и не отправляется на сервер. Если выполнение длится дольше трёх секунд, оно прерывается.

Для вашего удобства рекомендую использовать полноэкранный режим.

g

Ищем совпадения…

Текст

Вёрстка — 2026-10-17, ревью — 2026-10-20.
Неверная дата: 26-10-17.

Совпадения

Совпадения и группы
№ПозицияСовпадениеГруппы

Из чего состоит выражение

    Для проверки выражений включите JavaScript. Пример: /\d{4}-\d{2}-\d{2}/g находит даты вида2026-10-17.

    Флаги

    • g — найти все совпадения; без него exec() и match() возвращают только первое.
    • i — без учёта регистра, m — ^ и $ совпадают с началом и концом каждой строки, s — точка совпадает и с переводом строки.
    • u — режим Unicode: \p{L}, \u{1F44B} и строгий синтаксис. v — его расширение с операциями над наборами вроде [\p{L}--[a-z]]; вместе с u не используется.
    • y — поиск только с позиции lastIndex, d — позиции групп в свойстве indices.

    Группы и замена

    Круглые скобки создают группу захвата: её значение доступно как match[1] и в строке замены как $1. Именованная группа (?<year>\d{4}) доступна как match.groups.year и $<year>. Группа (?:…) только объединяет часть шаблона, не запоминая её.

    JavaScript
    const date = '2026-10-17'
    date.replace(/(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})/, '$<d>.$<m>.$<y>') // "17.10.2026"

    Почему выражение может «зависнуть»

    Вложенные квантификаторы вроде (a+)+$ на строке, которая почти подходит, перебирают огромное число вариантов разбиения — это называют катастрофическим возвратом. В браузере такое выражение блокирует страницу, на сервере — поток. Тестер прерывает выполнение через три секунды. Избегайте повторов внутри повторов и делайте альтернативы взаимоисключающими.

    Вопросы и ответы

    Почему находится только одно совпадение?

    Без флага g поиск останавливается на первом совпадении. Включите g — так работают matchAll() и replaceAll().

    Как вставить выражение в код?

    Литералом: /шаблон/флаги. Если шаблон собирается из строки через new RegExp('…'), каждую обратную косую черту нужно удвоить: \d записывается как '\\d'.

    Совпадёт ли результат с другими языками?

    Не всегда: синтаксис регулярных выражений в PHP, Python и других языках отличается в деталях — например, именованными группами и поддержкой Unicode. Тестер проверяет именно JavaScript.

    Изучить регулярные выражения

    Подробнее — в статьях об объекте RegExp и методах строк match(), replace(), search() и split().