Tester regex
Testuj regex JavaScript z podświetlaniem dopasowań, grupami i podglądem 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
O tym narzędziu
Regex Tester ewaluuje wyrażenia regularne JavaScript wobec ciała tekstu testowego i podświetla każde dopasowanie w miejscu. Pole wzorca akceptuje pełną składnię regex ECMAScript — kotwice, klasy znaków, alternację, lookahead, lookbehind, nazwane grupy chwytające, escape'y właściwości Unicode — z osobnymi togglami dla standardowych flag (g global, i ignore case, m multiline, s dot-matches-newline, u Unicode, y sticky). Dopasowania są kolorowane, a grupy chwytające są listowane pod podświetleniem dla każdego z nich.
Poza dopasowaniem narzędzie może uruchomić preview replace obok oryginału — wpisz string zastępujący (z backreferencjami $1 / $<name>) i zobacz dokładnie, co Twój regex wyprodukuje wobec testowego inputu. Każda operacja działa w Twojej przeglądarce z natywnym silnikiem RegExp, więc to, co debugujesz tu, jest dokładnie tym, co wykonuje się w produkcyjnym JavaScript (Node, Bun, Deno, każda przeglądarka).
Kiedy używać tego narzędzia
- Budowanie walidatorów inputu. Wzorce e-mail, numerów telefonu, kodów pocztowych — projektuj i weryfikuj na realistycznych danych testowych przed wciśnięciem do kodu.
- Parsowanie plików logów. Iteruj wzorzec multi-group capture wobec prawdziwych linii logu, aż każde pole wyjdzie czysto.
- Edycja masowa. Testuj wzorzec find/replace przed uruchomieniem go na setkach plików w edytorze.
- Nauka regex. Podświetlone dopasowania plus natychmiastowy feedback to najszybszy sposób na internalizację look-around, kotwic i backreferencji.
O wariantach regex
To narzędzie używa regex JavaScript (ECMAScript 2018+). PCRE, Python, .NET, Go i Java wszystkie różnią się nieco — PCRE wspiera wzorce rekurencyjne, których JavaScript nie ma, modułowire Pythona brakuje lookbehind w niektórych wersjach, Go używa RE2, który całkowicie zabrania backreferencji. Jeśli celujesz w środowisko nie-JS, dwukrotnie sprawdź cechy specyficzne dla wariantu po stronie odbierającej. Dla czysto kompatybilnych z ECMAScript wzorców to narzędzie jest autorytatywne.
Najczęstsze pytania
Czym różnią się flagi g, m i s?
g (global) sprawia, że .match() i .replace() znajdują każde dopasowanie zamiast tylko pierwszego. m (multiline) sprawia, że ^ i $ pasują na łamaniach linii wewnątrz inputu, nie tylko na początku/końcu całego stringa. s (dotall) sprawia, że . pasuje też do nowych linii (domyślnym zachowaniem jest je pomijać). Są niezależne — łącz w zależności od potrzeb.
Dlaczego mój lookbehind nie działa?
(?<=...) wymaga nowoczesnego ECMAScript (2018+) i jest dostępny we wszystkich aktualnych evergreen browsers i Node 10+. Starsze runtime'y (IE 11, Safari przed 16.4, bardzo stary Node) odrzucają wzorzec przy kompilacji. Nasz tester używa silnika przeglądarki, więc jeśli Twój tester działa, ale target runtime zawodzi, target jest za stary. Workaround: przepisz bez lookbehind używając grupy niechwytającej i slice'a.
Jak testować przeciwko długiemu stringowi?
Co to jest "catastrophic backtracking"?
(a+)+ wobec długiego stringa kończącego się non-match. Silnik regex próbuje każdej permutacji przed poddaniem się. Nowoczesne silniki JavaScript nie mają timeoutu, więc strona może zawisnąć. Naprawa: przepisz bez zagnieżdżonych kwantyfikatorów, użyj grup possessive przez (?:a+) lub zakotwicz wzorzec ściślej.