onlinetools.dev

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

Перевіряйте регулярні вирази з підсвічуванням збігів і груп у реальному часі

Працює локально
loading…
Про цей інструмент

Напишіть шаблон, вставте зразок тексту — і кожен збіг підсвічується, поки ви набираєте, а знизу перелічені групи захоплення, іменовані групи та позиції збігів. Тестер використовує рушій RegExp із JavaScript, тож поведінка точно збігається з тим, що робитимуть Node.js і браузери, включно з lookbehind, іменованими групами та екрануванням властивостей Unicode.

Прапорці вмикаються по літері (g, i, m, s, u, y, d), а шаблон компілюється на кожне натискання клавіші; синтаксичні помилки з’являються негайно з власним повідомленням рушія, а не після натискання кнопки. Шаблони з порожніми збігами на кшталт a* обробляються безпечно, а кількість збігів обмежена 10 000, щоб випадкове .* не підвісило вкладку.

Діалекти регулярних виразів різняться між рушіями — шаблон, що працює тут, може потребувати правок для PCRE, RE2 чи модуля re в Python, здебільшого щодо підтримки lookbehind, присвійних квантифікаторів та вбудованих прапорців.

Часті запитання

Який різновид регулярних виразів використовує цей тестер?
ECMAScript (JavaScript) у реалізації вашого власного браузера. Підтримуються lookahead, lookbehind, іменовані групи захоплення, зворотні посилання та екранування властивостей Unicode на кшталт \p{Letter} (з прапорцем u). Синтаксис, властивий лише PCRE — присвійні квантифікатори чи рекурсія, — не підтримується.
Чому мій шаблон збігається з усім / ні з чим?
Дві класичні причини: неекранований метасимвол (. збігається з будь-яким символом — екрануйте його як \. для буквальної крапки) або подумки забутий прапорець g — цей тестер завжди знаходить усі збіги, а ваш код знайде лише перший, якщо g не встановлено.
Що таке іменовані групи захоплення?
Синтаксис (?<ім’я>...) дає групі мітку, щоб читати збіги за ім’ям, а не за позицією: match.groups.ім’я в JavaScript. Панель груп під збігами показує для кожного збігу і нумеровані, і іменовані захоплення.
Чи запрацює регулярний вираз звідси без змін у Python або Go?
Часто так, але не завжди. Класи символів, квантифікатори та якорі переносяться; lookbehind, синтаксис іменованих груп (Python використовує (?P<ім’я>...)) і вбудовані прапорці різняться. Рушій RE2 у Go до того ж повністю відкидає зворотні посилання та lookaround.
Пов’язані інструменти