Текст
Regex Tester / Find & Replace
Перевірка регулярних виразів на реальному тексті: підсвічені збіги й розібрані групи захоплення, або заміна знайдених збігів на новий текст.
Regex (регулярний вираз) — компактна мова для опису шаблонів у тексті: пошук, перевірка формату чи заміна. Інструмент показує збіги на реальному тексті одразу під час набору виразу, підсвічує групи захоплення й підтримує режим заміни.
Як користуватися
- Пошук: введіть вираз і тестовий текст — усі збіги підсвітяться, а групи захоплення розберуться окремо.
- Заміна: перемкніться в режим Replace, вкажіть шаблон заміни (з посиланням на групи $1, $2) і отримайте результат одразу.
- Прапорці (g, i, m, s) вмикаються окремо й одразу впливають на кількість і спосіб пошуку збігів.
Типові сценарії
- Підбір і налагодження regex перед вставкою в код — видно результат без запуску програми.
- Масова заміна тексту за шаблоном (наприклад, форматування номерів телефонів чи дат).
- Валідація формату вхідних даних (email, номер картки, slug) на прикладах.
Що варто памʼятати
Жадібні квантифікатори (*, +) захоплюють якнайбільше символів — якщо потрібен мінімальний збіг, додайте ? (наприклад, .*? замість .*).
Синтаксис трохи відрізняється між мовами програмування — вираз, що працює тут (JavaScript-движок), може знадобитися адаптувати для PCRE, .NET чи Python.
Стаття про цей інструмент: Регулярні вирази: основний синтаксис і типові патерни
Часті запитання
Який движок regex використовується?
Інструмент використовує движок regex JavaScript, а не PCRE, тож деякий специфічний для PCRE синтаксис (як рекурсивні твердження чи певні режими посесивного зіставлення) тут не працюватиме; підтримуються поширені прапорці, як-от g, i, m, s та u.
Яка різниця між жадібними й лінивими квантифікаторами, та між Test і Replace?
Жадібний квантифікатор, як * чи +, захоплює якомога більше тексту, тоді як його лінива версія (*?, +?) зупиняється якомога раніше; щодо режимів, Test підсвічує збіги й перелічує групи захоплення (включно з іменованими), а Replace застосовує замінний текст, із посиланнями на кшталт $1, до кожного збігу.
Чи надсилаються мій текст і вираз на сервер?
Ні, обчислення регулярного виразу повністю відбувається на стороні клієнта у вашому браузері, нічого не передається онлайн.
Що таке катастрофічний backtracking?
Вкладені квантифікатори на кшталт (a+)+ можуть на певних вхідних рядках змусити движок перебирати експоненційну кількість комбінацій — сторінка чи скрипт «зависають» на, здавалося б, простому виразі. Це реальна вразливість (ReDoS), тому складні вкладені квантифікатори варто тестувати на довгих майже-збіжних рядках.
Чому мій вираз працює в одній мові програмування, але не в іншій?
Синтаксис regex не повністю стандартизований: PCRE (PHP, багато інших мов), .NET, Python re і JavaScript мають дрібні відмінності в підтримці певних конструкцій (наприклад, look-behind чи іменованих груп) — вираз, написаний для одного движка, не завжди без змін працює в іншому.