Wszystkie narzędzia

Tester regex

Wyrażenia regularne dopasowują wzorce w tekście do walidacji, search-replace i parsowania logów. Testuj wzorce z live highlighting przed wrzuceniem do kodu produkcyjnego — unikaj niespodzianek catastrophic backtracking na input użytkownika.
Wzorzec
Flagi
Tekst testowy
Wynik
[0] Hello [6] world [12] 123

Jak testować regex

1. Wpisz wzorzec regex (bez zewnętrznych slashy lub z flagami).
2. Ustaw flagi: g global, i case insensitive, m multiline.
3. Wklej przykładowy tekst w obszar test string.
4. Przejrzyj dopasowania, grupy capture i podgląd replace, jeśli dostępny.

Przykłady regex

Walidacja „email-ish”

^[\w.-]+@[\w.-]+\.\w+$ łapie proste e-maile — nie RFC-perfect, ale użyteczne w formularzach.

Wyodrębnij daty ISO

\d{4}-\d{2}-\d{2} znajduje 2024-03-15 w liniach logów do grep replace.

Helper slugify

Zamień [^a-z0-9]+ na myślnik dla slug URL z tytułu.

Kiedy regex pomaga

Gdy walidujesz ustrukturyzowane stringi (telefon, kod pocztowy).
Gdy parsujesz półustrukturyzowane logi.
Gdy uczysz capture groups i lookahead.

Kiedy unikać regex

Gdy parsujesz HTML lub JSON — użyj właściwych parserów.
Gdy regex staje się nieczytelny — rozdziel na logikę kodu.
Gdy ryzyko ReDoS na wzorcach od użytkownika na serwerze — timeout i limit długości.

Świadomość ReDoS

Zagnieżdżone kwantyfikatory jak (a+)+ na złośliwym stringu zawieszają CPU — unikaj user regex na serwerze lub używaj bezpiecznych silników z timeout.

Walidacja vs extract

Zakotwiczony wzorzec ^...$ waliduje cały string; niezakotwiczony znajduje substring gdziekolwiek.

Replace w edytorach

VS Code używa podobnego JS regex w find-replace — testuj tutaj, potem wklej wzorzec.

Najczęstsze pytania

Jaki flavor regex?

JavaScript RegExp — różnice PCRE istnieją (lookbehind zależy od wersji silnika).

Flaga global g?

Znajduje wszystkie dopasowania, nie tylko pierwsze — testStateful z lastIndex w JS.

Escapować znaki specjalne?

. * + ? [ ] ( ) { } | \ ^ $ wymagają escape dla literal match.

Grupy capture?

Nawiasy ( ) tworzą numerowane grupy dostępne w replace $1 $2.

Lokalnie?

Tak.

Multiline ^ $?

Flaga m sprawia, że ^ $ dopasowują granice linii, nie całego stringa.