ДокументыИзображенияМедиаИнструменты PDF

Тестер Regex Онлайн

Тестируйте регулярные выражения в реальном времени с подсветкой совпадений.

//

2 matches found

#1hello@convertir.ai@14
#2support@example.com@36
Processed in your browser

Тестирование regex с мгновенным предпросмотром

JS RegExp

Нативный JavaScript движок: те же результаты, что в вашем коде.

Без интернета

Тестирование в браузере без отправки данных на сервер.

Группы захвата

Все группы захвата (нумерованные и именованные) отображаются отдельно.

Мгновенно

Совпадения подсвечиваются в реальном времени при вводе.

Три шага — никаких сложностей

1

Введите регулярное выражение

Введите regex в поле паттерна. Поддерживаются флаги g, i, m, s, u.

2

Вставьте тестовый текст

Введите или вставьте текст для проверки регулярного выражения.

3

Просмотрите совпадения

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

Остались вопросы?

Инструмент использует нативный JavaScript RegExp движок браузера. Это важно: синтаксис регулярных выражений немного отличается между языками. JS RegExp поддерживает именованные группы захвата (?<name>), lookahead/lookbehind, Unicode-свойства \p{} с флагом u.

Группы захвата (capturing groups) — части паттерна в скобках, которые захватывают соответствующую часть текста. Нумерованные: (pattern) → $1, $2. Именованные: (?<name>pattern) → groups.name. Группы без захвата: (?:pattern) — группируют без захвата. Обратные ссылки: \1, \k<name>.

g (global) — все совпадения, не только первое. i (insensitive) — игнорировать регистр. m (multiline) — ^ и $ совпадают с началом/концом строки. s (dotAll) — точка совпадает с \n. u (unicode) — режим Unicode. d (indices) — группы захвата с индексами. v (unicodeSets) — расширенные Unicode-классы.

Lookahead: (?=...) — совпадение, если за ним следует (positive), (?!...) — если не следует (negative). Lookbehind: (?<=...) — совпадение, если перед ним стоит (positive), (?<!...) — если не стоит (negative). Lookahead/lookbehind не включаются в захваченный текст.

Катастрофический откат возникает при вложенных квантификаторах на перекрывающихся паттернах: (a+)+ при строке из 'a'. Движок пробует экспоненциальное количество комбинаций. Решения: атомарные группы (?>pattern) (JS не поддерживает), поссесивные квантификаторы (a++) (JS не поддерживает), рефакторинг паттерна для исключения перекрытий.

Регулярные выражения: история, стандарты и современные возможности JS

Регулярные выражения (regular expressions) были формализованы математиком Стивеном Клини в 1956 году как способ описания регулярных языков. В 1968 году Кен Томпсон реализовал их в текстовом редакторе QED и в Unix-утилите grep (1973). POSIX стандартизировал Basic Regular Expressions (BRE) и Extended Regular Expressions (ERE) в 1988 году.

JavaScript использует движок PCRE-подобного типа (Perl Compatible Regular Expressions) с некоторыми отличиями. ECMAScript 2018 добавил lookbehind assertions ((?<=) и (?<!)) и именованные группы захвата (?<name>). ECMAScript 2022 добавил флаг d для получения индексов. ECMAScript 2024 добавил флаг v (unicodeSets) для расширенных Unicode-классов.

Регулярные выражения остаются фундаментальным инструментом программирования: парсинг лог-файлов, валидация форм (email, телефон, postal code), поиск и замена в текстовых редакторах, роутинг URL в веб-фреймворках, синтаксическая подсветка в IDE. Знание regex — базовый навык, окупающийся ежедневно в работе с кодом и данными.