Regex Tester
Тестує JavaScript-regex з підсвіткою матчів, capture-групами і replace-прев'ю.
Matches in text
Capture groups
| # | Offset | Match | Group |
|---|---|---|---|
|
—
|
Replace preview
Quick reference
\d
Digit (0–9)
\w
Word char (a-z, 0-9, _)
\s
Whitespace
[^abc]
Anything except a/b/c
^/$
Start / end of line (with m flag)
a*
Zero or more
a+
One or more
a?
Zero or one
a{n,m}
Between n and m repetitions
(?<name>…)
Named capture group
(?=…)
Lookahead
(?<=…)
Lookbehind
Про цей інструмент
Regex Tester виконує JavaScript regular expressions проти тіла test-text і підсвічує кожен match на місці. Pattern-поле приймає повний ECMAScript regex-синтаксис — anchors, character classes, alternation, lookahead, lookbehind, named capture groups, Unicode property escapes — з окремими toggles для standard flags (g global, i ignore case, m multiline, s dot-matches-newline, u Unicode, y sticky). Matches color-coded, capture groups перелічено під підсвічуванням для кожного.
Окрім matching, інструмент може запускати replace-preview поруч з оригіналом — наберіть replacement-рядок (з $1 / $<name>-backreferences) і побачите точно, що ваш regex produce-не проти test-input. Кожна операція виконується у вашому браузері з нативним RegExp-engine, тож те, що ви дебажите тут, точно виконується в продакшн JavaScript (Node, Bun, Deno, кожен браузер).
Коли використовувати цей інструмент
- Побудова input-валідаторів. Email, phone-number, postcode-патерни — дизайнте і верифікуйте з реалістичними тест-даними перед push у код.
- Парсинг log-файлів. Ітеруйте multi-group capture-pattern проти реальних log-рядків, доки кожне поле не вийде чисто.
- Масове редагування. Тестуйте find/replace-pattern перед запуском по сотнях файлів у редакторі.
- Вивчення regex. Підсвічені matches плюс instant-feedback — найшвидший шлях інтерналізувати look-around, anchors і backreferences.
Про regex-flavours
Інструмент використовує JavaScript regex (ECMAScript 2018+). PCRE, Python, .NET, Go і Java відрізняються трохи — PCRE підтримує recursive-patterns, яких JavaScript не має, Pythonre у деяких версіях не має lookbehind, Go використовує RE2, що повністю забороняє backreferences. Якщо ви цільяться в non-JS-середовище, перевірте flavour-специфічні фічі окремо; для чисто ECMAScript-сумісних patterns цей інструмент авторитетний.
Часті запитання
Яка різниця між прапорцями g, m і s?
g (global) робить так, що .match() і .replace() знаходять кожен match замість лише першого. m (multiline) робить так, що ^ і $ матчуються на line breaks всередині input, а не лише на початку/кінці всього рядка. s (dotall) робить так, що . матчить також newlines (default-поведінка — їх пропускати). Вони незалежні — комбінуйте за потребою.
Чому мій lookbehind не працює?
(?<=...) вимагає сучасного ECMAScript (2018+) і доступний у всіх current evergreen-браузерах і Node 10+. Старіші runtimes (IE 11, Safari до 16.4, дуже старий Node) відкидають pattern на compile-time. Наш tester використовує engine браузера, тож якщо ваш tester працює, але target-runtime падає, target застарілий. Workaround: перепишіть без lookbehind через non-capturing group і slice.
Як тестувати проти довгого рядка?
Що таке «catastrophic backtracking»?
(a+)+ проти довгого рядка, що закінчується non-match. Regex-engine пробує кожну перестановку, перш ніж здатись. Сучасні JavaScript-engines не мають timeout, тож сторінка може зависнути. Фікс: перепишіть без nested quantifiers, використайте possessive-groups через (?:a+) або заякорьте pattern строгіше.