§

Шаблон

Прапори
§

Тестовий рядок

§

Збіги

0 збігів

    Збігів ще немає — введіть шаблон і тестовий рядок вище.

    §

    Режим заміни

    Швидкий довідник

    Класи символів

    \d
    Будь-яка цифра, еквівалент [0-9].
    \w
    Будь-який словесний символ — літери, цифри або підкреслення.
    \s
    Будь-який пробільний символ — пробіл, табуляція, новий рядок тощо.

    Якорі

    \b
    Твердження нульової ширини на межі слова.
    ^
    Початок введення (або кожного рядка, коли встановлено прапор m).
    $
    Кінець введення (або кожного рядка, коли встановлено прапор m).

    Квантифікатори

    *
    Нуль або більше попередніх токенів, жадібний.
    +
    Один або більше попередніх токенів, жадібний.
    ?
    Нуль або один попередній токен — також робить попередній квантифікатор лінивим.
    {n,m}
    Від n до m повторень попереднього токена.

    Групи

    (...)
    Група захоплення — доступна як $1, $2, … у замінах.
    (?:...)
    Незахоплювальна група — групує без використання слоту.
    (?...)
    Іменована група захоплення — доступна як $ у замінах.

    Lookaround

    (?=...)
    Позитивний lookahead — збіг лише якщо за ним іде …
    (?!...)
    Негативний lookahead — збіг лише якщо за ним НЕ йде …
    (?<=...)
    Позитивний lookbehind — збіг лише якщо перед ним іде …
    (?
    Негативний lookbehind — збіг лише якщо перед ним НЕ йде …

    Екранування

    \\
    Буквальний символ зворотного слешу.
    \.
    Буквальна крапка — екрануйте будь-який метасимвол для буквального збігу.

    Регулярні вирази JavaScript щодня застосовуються в розробці: перевірка форматів коду в Husky pre-commit хуках, валідація SKU у Shopify-темах, парсинг журналів Apache, очищення полів форм React перед передачею до Express-обробника. Цей тестер запускає кожен шаблон у вбудованому `RegExp` конструкторі браузера — так само, як це відбувається у продакшені, з перевіркою груп захоплення, перемикачами прапорів і живим підсвіченням.

    Як працює regex у вашому браузері?

    Кожне середовище виконання JavaScript постачається з вбудованим рушієм регулярних виразів — new RegExp(pattern, flags) компілює ваш шаблон, а такі методи, як String.prototype.match, String.prototype.replace та RegExp.prototype.exec, запускають його проти будь-якого рядка введення. Цей тестер обгортає рушій у інтерфейс, щоб ви могли редагувати, запускати та перевіряти шаблони, не виходячи з браузера. Нічого з того, що ви вводите — шаблон, прапори, тестовий рядок або заміна — не надсилається по мережі.

    Як працює тестер regex?

    Конвеєр складається з кількох коротких кроків, які виконуються на стороні клієнта при кожному натисканні клавіші (з затримкою 150 мс, щоб введення залишалося плавним):

    1. Тіло шаблону зчитується з поля введення вище (без початкових або кінцевих роздільників / — вони декоративні). Вибрані прапори об'єднуються в рядок прапорів, наприклад gi або gimsuy.
    2. new RegExp(patternBody, flags) компілює шаблон. Якщо рушій видає SyntaxError (наприклад, незакрита дужка або невірне екранування), повідомлення відображається над тестовим рядком, а список збігів очищується. Помилка компіляції — це реальне err.message від V8 / SpiderMonkey / JavaScriptCore, тому воно збігається з тим, що ви побачили б у DevTools.
    3. Для списку збігів тестер завжди перебирає з синтетичним глобальним прапором — тобто навіть якщо ви вимкнете g, список все одно показує кожен збіг. Стандартний захист від збігів нульової ширини (if (m.index === rx.lastIndex) rx.lastIndex++) запобігає зациклюванню на шаблонах, що збігаються з порожнім рядком. Режим заміни враховує ваш реальний набір прапорів, щоб $& поводився так само, як String.prototype.replace.
    4. Між кожною ітерацією тестер перевіряє performance.now() - start та перериває виконання після 50 мс. Це захищає від катастрофічного відкату на входах на кшталт (a+)+$ на довгій послідовності a — інакше вкладка зависне. Захист є найкращим зусиллям: патологічний шаблон з одним збігом може все одно витрачати час в одному виклику exec.
    5. Тестовий рядок розбивається на сегменти за діапазонами кожного збігу, а збіжні сегменти обгортаються в елементи <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 — це те, що постачається з вашим браузером, тому поведінка збігається з тим, що продакшн-код побачить під час виконання.