Тестер Regex Онлайн
Тестируйте регулярные выражения в реальном времени с подсветкой совпадений.
2 matches found
Зачем это нужно
Тестирование regex с мгновенным предпросмотром
JS RegExp
Нативный JavaScript движок: те же результаты, что в вашем коде.
Без интернета
Тестирование в браузере без отправки данных на сервер.
Группы захвата
Все группы захвата (нумерованные и именованные) отображаются отдельно.
Мгновенно
Совпадения подсвечиваются в реальном времени при вводе.
Как это работает
Три шага — никаких сложностей
Введите регулярное выражение
Введите regex в поле паттерна. Поддерживаются флаги g, i, m, s, u.
Вставьте тестовый текст
Введите или вставьте текст для проверки регулярного выражения.
Просмотрите совпадения
Все совпадения подсвечиваются в тексте, группы захвата отображаются отдельно.
FAQ
Остались вопросы?
Инструмент использует нативный 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 — базовый навык, окупающийся ежедневно в работе с кодом и данными.