Як користуватися
- Введіть регулярний вираз у поле «Шаблон» без скісних рисок навколо нього.
- Увімкніть потрібні прапорці. g (global) знаходить усі збіги, а не лише перший.
- Вставте текст для пошуку. Збіги буде підсвічено, а кожен із них відображатиметься в списку з індексом і захопленими групами.
- За бажанням введіть заміну, наприклад $2-$1, щоб попередньо переглянути результат String.replace.
Як це працює
Тестер виконує ваш шаблон за допомогою вбудованого в браузер об’єкта RegExp, тож результати точно відповідають тому, що повернув би код JavaScript (ECMAScript) у цьому браузері. В інших мовах використовуються інші різновиди regex: PCRE (PHP), модуль re у Python, Java та .NET підтримують функції, яких немає в JavaScript, як-от possessive quantifiers (a++), atomic groups ((?>…)), inline modifiers на кшталт (?i) і recursion. Вони також мають відмінності в деталях, наприклад в anchors \A та \Z. Перш ніж покладатися на шаблон в іншій мові, перевірте його саме в ній. Lookbehind ((?<=…)), named groups ((?<name>…)) і Unicode property escapes (\p{L} з прапорцем u) працюють у всіх сучасних браузерах.
Якщо прапорці g або y вимкнено, знаходиться лише перший збіг, як у RegExp.exec. Збіги нульової довжини, наприклад для ^ або \b, відображаються у списку, але не підсвічуються. Після такого збігу пошук переходить на один символ уперед (на одну кодову точку з прапорцем u), як у String.matchAll. Захоплені групи показано за номером і, якщо визначено, за назвою. Група, яка не брала участі у збігу, позначається як така, що не має значення; це не те саме, що порожній збіг.
Деякі шаблони, наприклад (a+)+$ для довгого рядка без збігів, можуть витрачати експоненційно багато часу на пошук (катастрофічний зворотний перебір). Щоб знизити ризик, пошук починається невдовзі після того, як ви припините вводити текст; перевіряються лише перші 100,000 символів, а збирається не більше ніж 1,000 збігів. Проблемний шаблон усе одно може на певний час призвести до зависання вкладки. Якщо це сталося, спростіть шаблон або скоротіть текст.
Приклади
Виділення дат
Шаблон (\d{4})-(\d{2})-(\d{2}) з увімкненим прапорцем g знаходить два збіги в тексті “Due 2026-03-15, paid 2026-04-02”. Група 1 — це рік; заміна $3.$2.$1 перетворює текст на “Due 15.03.2026, paid 02.04.2026”.
Іменовані групи для зрозумілого коду
Шаблон (?<key>\w+)=(?<value>[^&]*) для рядка запиту a=1&b=two виводить key і value для кожної пари — так само, як match.groups.key і match.groups.value у JavaScript.
Пошук без урахування регістру в кількох рядках
Шаблон ^error:.* з прапорцями g, i та m знаходить кожен рядок журналу, що починається з Error:, ERROR: або error:, оскільки прапорець m змушує ^ збігатися з початком кожного рядка.
Поширені запитання
Чи працюватиме мій regex так само в Python, PHP або Java?
Не обов’язково. Цей інструмент використовує рушій JavaScript. Базовий синтаксис спільний, але такі функції, як possessive quantifiers, atomic groups, inline flags на кшталт (?i) і деякі escape-послідовності, є лише в інших різновидах regex, а окремі конструкції працюють по-різному. Завжди перевіряйте шаблон у цільовій мові.
Чому знайдено лише один збіг?
Прапорець g (global) вимкнено. Без нього JavaScript повертає лише перший збіг. Увімкніть g, щоб знайти всі збіги.
Чи потрібно вводити скісні риски навколо шаблону?
Ні. Введіть лише шаблон, наприклад \d+, а не /\d+/g, і виберіть прапорці за допомогою прапорців-перемикачів. Нижче результатів показано літеральний запис JavaScript, який можна скопіювати в код.
Чому сторінка сповільнилася через мій шаблон?
Вкладені квантифікатори, як-от (a+)+ або (.*)*, можуть змусити рушій перебирати експоненційну кількість варіантів, якщо збігу немає. Зробіть шаблон конкретнішим, наприклад замініть .* на [^,]*, або використовуйте anchors. Щоб зменшити вплив, тестер обмежує текст до 100,000 символів.
Конфіденційність
Ваш шаблон і текст обробляються лише у вашому браузері за допомогою рушія JavaScript. Дані не завантажуються на сервер, не зберігаються й не передаються в аналітику.