Як працює regex у вашому браузері?
Кожне середовище виконання JavaScript постачається з вбудованим рушієм регулярних виразів — new RegExp(pattern, flags) компілює ваш шаблон, а такі методи, як String.prototype.match, String.prototype.replace та RegExp.prototype.exec, запускають його проти будь-якого рядка введення. Цей тестер обгортає рушій у інтерфейс, щоб ви могли редагувати, запускати та перевіряти шаблони, не виходячи з браузера. Нічого з того, що ви вводите — шаблон, прапори, тестовий рядок або заміна — не надсилається по мережі.
Як працює тестер regex?
Конвеєр складається з кількох коротких кроків, які виконуються на стороні клієнта при кожному натисканні клавіші (з затримкою 150 мс, щоб введення залишалося плавним):
- Тіло шаблону зчитується з поля введення вище (без початкових або кінцевих роздільників
/— вони декоративні). Вибрані прапори об'єднуються в рядок прапорів, наприкладgiабоgimsuy. new RegExp(patternBody, flags)компілює шаблон. Якщо рушій видаєSyntaxError(наприклад, незакрита дужка або невірне екранування), повідомлення відображається над тестовим рядком, а список збігів очищується. Помилка компіляції — це реальнеerr.messageвід V8 / SpiderMonkey / JavaScriptCore, тому воно збігається з тим, що ви побачили б у DevTools.- Для списку збігів тестер завжди перебирає з синтетичним глобальним прапором — тобто навіть якщо ви вимкнете
g, список все одно показує кожен збіг. Стандартний захист від збігів нульової ширини (if (m.index === rx.lastIndex) rx.lastIndex++) запобігає зациклюванню на шаблонах, що збігаються з порожнім рядком. Режим заміни враховує ваш реальний набір прапорів, щоб$&поводився так само, якString.prototype.replace. - Між кожною ітерацією тестер перевіряє
performance.now() - startта перериває виконання після 50 мс. Це захищає від катастрофічного відкату на входах на кшталт(a+)+$на довгій послідовностіa— інакше вкладка зависне. Захист є найкращим зусиллям: патологічний шаблон з одним збігом може все одно витрачати час в одному викликуexec. - Тестовий рядок розбивається на сегменти за діапазонами кожного збігу, а збіжні сегменти обгортаються в елементи
<mark class="rx-match rx-cap-N">, деNциклічно проходить шість кольорів палітри, щоб сусідні збіги було легко розрізнити. Нумеровані групи кожного збігу (m[1],m[2], …) та іменовані групи (m.groups) відображаються як мічені рядки нижче; якщо встановлено прапорd, також показуються індекси[start, end]для кожної групи.
Навіщо використовувати цей тестер regex?
- Конфіденційність: кожен шаблон, тестовий рядок і заміна запускаються у вашому браузері за допомогою вбудованого JavaScript RegExp. Нічого не покидає вкладку — важливо, коли введення є журналом клієнта, шаблоном витеклих облікових даних або чимось іншим, що ви б не вставили в хмарний SaaS playground.
- Справжній варіант: тестер використовує точний рушій regex, який запускають Node.js, Chrome, Safari, Firefox і кожен браузерний валідатор форм. Немає шару перекладу Perl-варіанту, що приховує тонкі відмінності — що працює тут, працює у вашому коді.
- Налагодження груп захоплення та іменованих груп: кожна нумерована група (
$1,$2, …) та іменована група ($<year>) відображаються для кожного збігу, щоб ви могли будувати парсер і читати слоти без здогадок. Режим заміни дозволяє вільно змішувати групи —$2-$1міняє перші два слоти місцями,$<name>вставляє іменований слот, а$&відтворює весь збіг. - Захист від катастрофічного відкату: ліміт 50 мс на перебір перериває патологічні шаблони на кшталт
(a+)+$до того, як вони заморозять вкладку. Ви бачите пояснювальну помилку замість зависання браузера, а сторінка відновлюється негайно.
Які поширені застосування тестера regex?
Регулярні вирази зустрічаються у веб-розробці, безпеці та роботі з даними — цей тестер орієнтований на найпоширеніші сценарії:
- Валідація форм: розробіть шаблон для email, телефону або поштового індексу, вставте приклади введення в тестовий рядок та підтвердьте, що кожен позитивний кейс збігається, а кожен негативний — ні, перш ніж відправити шаблон у продакшн-код.
- Парсинг журналів: вставте частину виводу NGINX, застосунку або журналу аудиту, напишіть шаблон з іменованими групами для потрібних частин (
(?<ip>…) (?<path>…)) та прочитайте захоплені слоти для кожного збігу, щоб підтвердити правильність парсера. - Пошук і заміна при рефакторингу: використовуйте режим заміни для перезапису ідентифікаторів у фрагменті —
(\w+)\.set(\w+)\(→$1.$2 =перетворює виклики геттерів на присвоєння властивостей, а жива попередній перегляд показує результат до застосування в codemod.
Як виглядає приклад regex?
Візьмемо шаблон (\d{4})-(\d{2})-(\d{2}) з прапором g, запущений проти тестового рядка release 2025-11-15, prerelease 2026-05-25. Рушій знаходить два збіги. Перший збіг — 2025-11-15 з групою 1 = 2025, групою 2 = 11, групою 3 = 15. Другий збіг — 2026-05-25 з тією самою структурою груп. У режимі заміни шаблон $3/$2/$1 перезаписує обидві дати на 15/11/2025 та 25/05/2026 — однокроковий перетворювач ISO в DMY, який можна перевірити візуально до впровадження в скрипт.
Використовуйте цей тестер як швидкий спосіб для будь-якої роботи з regex — побудови, налагодження або перезапису шаблонів. Все виконується локально; нічого не журналюється; рушій regex — це те, що постачається з вашим браузером, тому поведінка збігається з тим, що продакшн-код побачить під час виконання.