Блог
Русский

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

Тестер регулярных выражений JavaScript с флагами, подсветкой совпадений, таблицей групп и превью замены

Работает в браузере · файлы никуда не загружаются

Флаги

Что это за инструмент

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

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

  1. Введите шаблон без окружающих слешей (вставленный из кода литерал /pattern/gi разделяется на шаблон и флаги), например (\d+)-(?<word>[a-z]+).
  2. Отметьте нужные флаги. Флаг g, который находит все совпадения, включен по умолчанию.
  3. Вставьте тестовый текст. Совпадения подсвечиваются, а в таблице перечислены позиции и группы каждого совпадения.
  4. В поле замены используйте $1, $<name> или $&, чтобы увидеть результат, и скопируйте его. Чтобы удалить все совпадения, включите Показать замену и оставьте поле пустым.

Как это работает

  • Флаги: g — глобальный поиск, i — без учета регистра, m — ^ и $ работают для каждой строки, s — . совпадает и с переводом строки, u — режим Юникода, y — совпадение только с текущей позиции (sticky).
  • Без g возвращается только первое совпадение. С g и y одновременно находятся только совпадения, идущие подряд без промежутков.
  • Пустые совпадения (a*, ^, пустой шаблон) сдвигают позицию на один символ, и поиск продолжается; с u шаг равен целой кодовой точке.
  • Синтаксис замены — как у String.prototype.replace: $$, $&, $`, $', от $1 до $99 и $<name>.
  • Защита: не более 1000 совпадений, 200 000 символов текста и 5000 символов шаблона, а также лимит выполнения 1,5 секунды. Лимит работает за счет того, что поиск выполняется в Web Worker и прерывается, поэтому основная страница никогда не зависает.

Примеры

Шаблон Флаги Текст Результат
\d+ g a1 b22 c333 1, 22, 333
[а-яё]+ g abc привет test тест привет, тест
a* g baac четыре совпадения: на позициях 0, 1 (aa), 3 и 4
(?<y>\d{4})-(\d{2}) 2024-05 группа 1 y = 2024, группа 2 = 05

Полезно знать

  • Диапазон [а-я] не включает букву ё, поэтому для русских слов пишите [а-яё], а с заглавными — [А-ЯЁа-яё] (или используйте флаг i). Эмодзи можно найти с флагом u и \p{Emoji_Presentation}.
  • Шаблон и текст никогда не отправляются на сервер.

Частые вопросы

Какой диалект регулярных выражений используется?

Встроенный в браузер движок регулярных выражений JavaScript (ECMAScript), поэтому синтаксис местами отличается от Python, PCRE или Java. Притяжательные квантификаторы и встроенные флаги вроде (?i) недоступны, а именованные группы записываются как (?<name>...).

Что будет, если шаблон выполняется слишком долго?

Поиск идет в отдельном Web Worker, который прерывается через 1,5 секунды. Вложенные повторения вроде (a+)+$ на чуть более длинном тексте могут замедляться экспоненциально (катастрофический бэктрекинг). В этом случае появится сообщение, а страница не зависнет.

Есть ли ограничения на число совпадений или длину текста?

Показываются первые 1000 совпадений, текст может быть длиной до 200 000 символов, шаблон — до 5000. Сверх этого список обрезается или выводится сообщение.

Может ли шаблон, совпадающий с пустой строкой, зациклиться?

Нет. После пустого совпадения позиция поиска (lastIndex) сдвигается на один символ вперед, поэтому цикл всегда завершается. С флагом u шаг равен целой кодовой точке, так что эмодзи никогда не разрезается.

Не нашли нужный инструмент?