Онлайн-тестер регулярных выражений JavaScript
Тестер регулярных выражений JavaScript с флагами, подсветкой совпадений, таблицей групп и превью замены
Работает в браузере · файлы никуда не загружаются
Что это за инструмент
В регулярных выражениях легко ошибиться в мелочах. Введите шаблон и текст, и инструмент сразу покажет, где есть совпадения, выделит каждое цветом и перечислит все совпадения с позициями и группами захвата. Добавьте строку замены, чтобы увидеть текст после подстановки.
Как пользоваться
- Введите шаблон без окружающих слешей (вставленный из кода литерал
/pattern/giразделяется на шаблон и флаги), например(\d+)-(?<word>[a-z]+). - Отметьте нужные флаги. Флаг
g, который находит все совпадения, включен по умолчанию. - Вставьте тестовый текст. Совпадения подсвечиваются, а в таблице перечислены позиции и группы каждого совпадения.
- В поле замены используйте
$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 шаг равен целой кодовой точке, так что эмодзи никогда не разрезается.