Encoders & Utilities

Regex Tester

Тестує JavaScript-regex з підсвіткою матчів, capture-групами і replace-прев'ю.

g (global), i (case-insensitive), m (multiline), s (dotall), u (unicode), y (sticky)

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 не має, Python re у деяких версіях не має 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 не працює?

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.

Як тестувати проти довгого рядка?

Вставте у test-text-панель — немає length-cap поза тим, що може втримати браузер. Для файлів вставляйте їхній вміст напряму. Підсвічені matches лишаються в sync, коли скролите. Для екстремальних input (мегабайти тексту плюс catastrophically backtracking regex) сторінка може ненадовго замерзнути; якщо це сталось, спростіть regex або розбийте input.

Що таке «catastrophic backtracking»?

Pattern, що бере експоненційний час на деяких inputs — типово nested quantifiers на кшталт (a+)+ проти довгого рядка, що закінчується non-match. Regex-engine пробує кожну перестановку, перш ніж здатись. Сучасні JavaScript-engines не мають timeout, тож сторінка може зависнути. Фікс: перепишіть без nested quantifiers, використайте possessive-groups через (?:a+) або заякорьте pattern строгіше.