Тестер регулярных выражений
Проверьте регулярное выражение на образце текста, совпадения подсвечиваются в реальном времени по мере ввода. Смотрите каждое совпадение и его группы захвата.
Справочник флагов
g глобальный (находит все совпадения, здесь всегда применяется внутренне), i без учёта регистра, m многострочный (^ и $ совпадают с границами строк), s dotAll (. совпадает с переносами строк), u юникод, y липкий (sticky).
Как это работает
Ваш шаблон компилируется нативным движком RegExp браузера — тем же самым движком, который ваш JavaScript-код будет использовать в продакшене. В этом и смысл тестирования здесь, а не в инструменте на основе PCRE: синтаксис, отличающийся между диалектами (поддержка lookbehind, семантика \d под флагом u, именованные группы), ведёт себя здесь точно так же, как в Node или браузере. Поле флагов очищается до допустимого набора (d g i m s u y), и тестер незаметно добавляет g внутренне, чтобы пройтись по каждому совпадению, не меняя то, что вы ввели.
Сопоставление выполняется при каждом нажатии клавиши: тестер вызывает exec() в цикле, собирая текст совпадения, позицию и группы захвата. Две защиты обеспечивают корректность: совпадения нулевой длины (от шаблонов вроде a*) получают ручное продвижение индекса, чтобы цикл не крутился бесконечно, а итерации ограничены 5000 совпадениями. Подсветка строится путём однократного прохода по вашей тестовой строке и обёртывания каждого совпавшего участка, при этом весь текст сначала экранируется в HTML, чтобы совпадение, содержащее <script>, отображалось как текст, а не как разметка.
Всё остаётся в вашей вкладке; панель Network в DevTools показывает ноль запросов во время ввода, поэтому тестовые строки с реальными данными никогда не покидают ваш компьютер.
Стоит знать одну ловушку: вложенные квантификаторы вроде (a+)+$ могут вызвать катастрофический бэктрекинг, при котором время сопоставления экспоненциально растёт на длинном почти совпадающем вводе. Если страница зависает на таком шаблоне, дело не в инструменте, а в самом регулярном выражении, и оно точно так же подвесит ваш продакшен-код. Перепишите шаблон так, чтобы квантифицированные группы не могли совпадать с одними и теми же символами несколькими способами.