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.