Перейти до вмісту

Перевірка регулярних виразів онлайн

Перевірте регулярний вираз JavaScript на своєму тексті: збіги підсвічуються наживо, а групи захоплення й зрозуміле пояснення видно одразу, просто у вашому браузері.

Різновид regex: JavaScript (ECMAScript)Той самий рушій, що й у вашому браузері, Node.js і Deno
//g

$1 або $<name> вставляє групу, $& — увесь збіг, $` і $' — текст до і після збігу, $$ — знак долара.

Тут зʼявляться збіги та групи захоплення.

Працює у браузері · без надсилання на серверЯк це працює

Як користуватися: Тестер регулярних виразів

  1. 1

    Введіть шаблон

    Впишіть регулярний вираз без скісних рисок; прапорці вмикаються перемикачами під ним.

  2. 2

    Додайте тестовий рядок

    Вставте текст для пошуку: збіги підсвічуються й перелічуються разом із групами захоплення під час введення.

  3. 3

    Перегляньте пояснення

    Відкрийте «Пояснення», щоб прочитати кожен токен простими словами й побачити, що шаблон робить насправді.

  4. 4

    Перевірте заміну

    Введіть заміну з $1 або $<name>, щоб побачити результат, а потім скопіюйте код із вкладки «Код».

Ліміти та Pro

Безкоштовно й без реєстрації: до 100 000 підрахованих збігів, 2 000 підсвічених і 200 у таблиці; підсвічування працює для тестових рядків до 200 000 символів, а кожен запуск зупиняється через 1,5 секунди.

Pro прибирає рекламу; тестер працює однаково в усіх тарифах. Дивитися Pro

Про інструмент: Тестер регулярних виразів

Цей тестер запускає ваш шаблон у рушії регулярних виразів JavaScript (ECMAScript), вбудованому в браузер. Той самий рушій використовують Node.js, Deno, Bun і будь-яка вебсторінка, тож те, що збігається тут, збігатиметься і у вашому коді. Введіть шаблон і тестовий рядок — усі збіги підсвічуються під час введення, а поруч з’являється таблиця позицій, нумеровані й іменовані групи захоплення, а з увімкненим прапорцем d — ще й початок і кінець кожної групи.

Усі вісім прапорців можна вмикати й вимикати: g — для всіх збігів, i — без урахування регістру, m — щоб ^ і $ працювали для кожного рядка, s — щоб крапка збігалася і з переносами рядків, u — для повного Unicode та екранувань властивостей \p{…}, v — для наборів Unicode з перетином і відніманням у дужках, y — для липкого пошуку, d — для індексів. Поле «Замінити на» показує попередній результат String.prototype.replace із $1, $<name>, $& та іншими токенами підстановки, а вкладка «Код» пропонує готові фрагменти з літералом, matchAll і RegExp().

Вкладка «Пояснення» розбирає шаблон на токени й простими словами описує, що робить кожен: групи, перевірки навколо, класи символів, квантифікатори, жадібні вони чи лінійві. «Шпаргалка» вставляє поширені токени в позицію курсора.

Пошук виконується у фоновому Web Worker з обмеженням 1,5 секунди. Шаблон із катастрофічним відкатом, наприклад (a+)+b для довгого рядка з літер a, буде зупинено з поясненням, а вкладка не зависне. Шаблони для PCRE, Python чи .NET можуть потребувати змін: власницьких квантифікаторів, атомарних груп, рекурсії, \A і \Z у JavaScript немає.

Приватність

Шаблони й тестові рядки залишаються у вкладці вашого браузера: пошук виконується в локальному Web Worker, і нічого з введеного не надсилається на сервер, не журналюється й не зберігається, тож можна сміливо перевіряти реальні рядки логів чи дані клієнтів.

Можливості

Справжній рушій JS

Збігається так само, як RegExp у браузерах і Node.js, зокрема з наборами прапорця v та іменованими групами.

Пояснення токен за токеном

Кожну групу, клас, якір і квантифікатор описано простими словами.

Захист від відкатів

Пошук виконується у воркері з обмеженням 1,5 секунди, тож поганий шаблон не зависить сторінку.

Тестер регулярних виразів: поширені запитання

Який різновид регулярних виразів використовує цей тестер?
Різновид JavaScript, визначений стандартом ECMAScript і реалізований у вашому браузері. Він підтримує lookbehind, іменовані групи, екранування властивостей Unicode та прапорець v, але не має можливостей PCRE: власницьких квантифікаторів, атомарних груп, рекурсії чи умов. Синтаксис Python (?P<name>…) тут треба писати як (?<name>…). Результати збігаються з Node.js і Deno на тій самій версії рушія.
Чому мій шаблон знаходить лише перший збіг?
Без прапорця g JavaScript зупиняється після першого збігу: exec і match повертають один результат, а replace змінює лише перше входження. Увімкніть g, щоб знаходити й замінювати всі збіги. Липкий прапорець y працює інакше: він шукає збіг тільки в тій позиції, де закінчився попередній, що зручно для токенізаторів.
Що таке катастрофічний відкат?
Коли шаблон може збігатися з тим самим текстом багатьма способами, як-от із вкладеними квантифікаторами (a+)+ або (.*)*, невдалий пошук змушує рушій перебирати всі комбінації, а їх кількість зростає експоненційно. Тут пошук зупиняється через 1,5 секунди з попередженням. Виправлення: робіть альтернативи взаємовиключними, наприклад [^,]* замість .* перед комою.
Як використати групи захоплення в заміні?
Пишіть $1, $2 і так далі для нумерованих груп або $<name> для іменованої, як-от (?<year>\d{4}). $& вставляє весь збіг, $` — текст перед ним, $' — текст після нього, а $$ дає символ долара. Кнопка «Спробувати приклад» завантажує шаблон дати, який саме так змінює порядок року, місяця й дня.
Коли потрібен прапорець u або v?
Використовуйте u, якщо в тексті є емодзі чи інші символи поза базовою багатомовною площиною: тоді крапка й квантифікатори вважають їх одним символом, а ще це потрібно для властивостей Unicode на кшталт \p{L}. Новіший прапорець v робить усе, що u, і додає операції над наборами в дужках, наприклад [\p{L}--[a-z]] для літер не з ASCII. Ці два прапорці не можна поєднувати.