Tester Regex
Testuj regex JavaScript na żywo. Zobacz matche, grupy przechwytujące i aplikuj zamiany w trakcie pisania.
/
/
Wpisz dane powyżej, aby zobaczyć wynik.
Wpisz dane powyżej, aby zobaczyć wynik.
Do czego to służy?
Wyrażenia regularne są gęste i bezlitosne. Sposób na napisanie takiego, który faktycznie działa, jest iteracyjny — pattern, przykładowy tekst, zobacz, co się matchuje, popraw. To narzędzie daje ci tę pętlę w przeglądarce, używając natywnego RegExp silnika JavaScriptu, plus podgląd grup przechwytujących i podgląd zamiany. Patterny i input nigdy nie opuszczają strony.
Kiedy tego użyć
- Walidacja inputu użytkownika (kształt maila, telefonu, kodu pocztowego) i widzenie dokładnie, które inputy przechodzą, a które padają.
- Parsowanie linii loga, wyciąganie pól, budowa filtrów logów.
- Projektowanie patternów find-and-replace przed odpaleniem ich na realnym codebasie.
- Debug regexa skopiowanego ze Stack Overflow, który nie działa — wklej tu, zobacz, co faktycznie matchuje.
Typowe patterny
\b\w+@\w+\.\w+\b— w stylu maila^\s*$— pusta linia / sama whitespace (z flagąm)(?<year>\d{4})-(?<month>\d{2})— nazwane grupy przechwytujące(?:.*)— grupa nieprzechwytująca(?=foo)/(?!foo)— lookahead / negative lookahead
Częste pułapki
- JavaScript ≠ PCRE. Brak
\K, brak rekurencyjnych patternów, lookbehind dopiero od ES2018. Patterny z Perla, PHP albo Pythona często wymagają poprawki. - Bez flagi
gdostajesz tylko pierwszy match. Dodajgdla "znajdź wszystkie"; połącz zm, jeśli anchory mają matchować per linia. - Greedy vs lazy.
.*zżera maksimum;.*?zżera minimum. Różnica między matchowaniem<b>hi</b> i <i>there</i>jako jeden blok vs dwa. - Anchory na granicach linii vs stringa.
^i$matchują końce stringa domyślnie; z flagąmmatchują każdą linię. - Specjalne znaki w replacement.
$&to cały match;$1,$2, … to grupy przechwytujące;$$to literalny$. Zapomnienie tego to klasyczne źródło "dlaczego mój regex zżera moje dolary". - Nie parsuj HTML-a regexem w niczym poważnym. Klasyczne ostrzeżenie jest prawdziwe: zagnieżdżone tagi, komentarze i CDATA wymagają prawdziwego parsera. Regex jest OK do jednorazowego scrapingu logów albo kontrolowanych inputów.