Regex tester
Regex tester: wpisz wzorzec, wybierz flagi i wklej tekst testowy. Zobaczysz każde dopasowanie z indeksem, zawartość numerowanych i nazwanych grup przechwytujących oraz objaśnienie każdej części wzorca po polsku. Dopasowanie wykonuje silnik JavaScript Twojej przeglądarki (ECMAScript).
Jak to obliczamy
Ten regex tester korzysta z odmiany JavaScript wyrażeń regularnych, zdefiniowanej w standardzie ECMA-262 i zaimplementowanej w Twojej przeglądarce. Wzorzec, który działa tutaj, działa tak samo w String.prototype.match, matchAll, replace i RegExp.prototype.test – w Chrome, Firefoksie, Safari i Node.js.
Jak czytać wynik
- Dopasowania: każde dopasowanie z indeksem (pozycja znaku liczona od zera, w jednostkach UTF-16 jak w JavaScripcie – emoji liczy się jako 2) i długością. Znaki nowej linii są pokazane jako ↵, tabulatory jako ⇥.
- Grupy w każdym dopasowaniu: co przechwyciła każda para nawiasów – grupy numerowane
( )i nazwane(?<nazwa> ). „Nie uczestniczyła” oznacza, że grupa leży w alternatywie, która nie została wybrana. Z flagąddostajesz też pozycję każdej grupy. - Objaśnienie wzorca: każdy element opisany po polsku; wcięte wiersze (›) leżą wewnątrz grupy.
Flagi
g znajduje wszystkie dopasowania zamiast tylko pierwszego, i ignoruje wielkość liter, m sprawia, że ^ i $ działają w każdej linii, s pozwala kropce dopasować znak nowej linii. u traktuje emoji i inne znaki spoza podstawowej płaszczyzny (BMP) jako jeden znak i włącza właściwości Unicode, np. \p{L} (dowolna litera, także ą, ę czy ł). v to nowsza wersja u z operacjami na zbiorach, np. [\p{L}--[a-z]]; u i v nie da się łączyć. y („sticky”) znajduje tylko dopasowania następujące po sobie bez przerw.
Ochrona przed nieskończonymi pętlami i zawieszeniem
Wzorce takie jak a* czy \b mogą dawać puste dopasowania. Tak jak sam JavaScript, tester przesuwa się wtedy o jeden znak (z u/v o cały punkt kodowy), więc nie powstaje nieskończona pętla. Wyszukiwanych jest najwyżej 1000 dopasowań.
Większym zagrożeniem jest katastrofalny backtracking (ReDoS): zagnieżdżone kwantyfikatory, np. (a+)+$, sprawdzają wykładniczą liczbę kombinacji na tekście, który nie pasuje – 30 znaków potrafi zająć silnik na minuty. Dlatego wyszukiwanie działa w osobnym wątku w tle i jest przerywane po 2 sekundach; strona pozostaje responsywna. Unikaj takich wzorców także we własnym kodzie, zwłaszcza przy danych od użytkowników.
Różnice względem innych odmian regex
PCRE (PHP), Python, Java i .NET różnią się w szczegółach: JavaScript nie ma kwantyfikatorów zaborczych (a++), grup atomowych ani kotwic \A i \Z; \w obejmuje tylko A–Z, a–z, 0–9 i podkreślenie – dla polskich liter użyj \p{L} z flagą u.
Twój tekst testowy nie jest wysyłany, zapisywany ani umieszczany w linku – trafiają tam tylko wzorzec i flagi.
Najczęściej zadawane pytania
Jak przetestować wyrażenie regularne?
Wpisz wzorzec bez ukośników w górnym polu, zaznacz potrzebne flagi i wklej tekst. Wszystkie dopasowania od razu zostaną podświetlone w tekście i wypisane z indeksem; poniżej widać, co przechwyciła każda grupa.
Dlaczego \w nie dopasowuje polskich liter?
W JavaScripcie \w oznacza tylko A–Z, a–z, 0–9 i _. Dla liter w dowolnym języku użyj \p{L} z flagą u, np. [\p{L}\d_]+ dla słowa „źdźbło”.
Czym różni się kwantyfikator zachłanny od leniwego?
Kwantyfikatory zachłanne (*, +, {2,}) biorą jak najwięcej tekstu, leniwe ze znakiem zapytania na końcu (*?, +?) – jak najmniej. Dla „<b>x</b>” wzorzec <.+> dopasuje cały tekst, a <.+?> tylko „<b>”.
Jak nazwać grupę przechwytującą?
Użyj (?<nazwa>…). W kodzie odczytasz ją przez match.groups.nazwa, w tekście zastępczym przez $<nazwa>, a we wzorcu przez odwołanie wsteczne \k<nazwa>.
Dlaczego wyszukiwanie zostało przerwane?
Trwało dłużej niż 2 sekundy – zwykle z powodu katastrofalnego backtrackingu przy zagnieżdżonych kwantyfikatorach, np. (\w+)*. Uprość wzorzec: nie zagnieżdżaj kwantyfikatorów, ujednoznacznij alternatywy i zakotwicz go za pomocą ^ i $.
Czy wynik obowiązuje też w PHP lub Pythonie?
Przy prostych wzorcach zwykle tak, ale gwarancja dotyczy tylko JavaScriptu. PHP (PCRE) i Python obsługują dodatkową składnię, np. kwantyfikatory zaborcze czy \A, a Python tradycyjnie zapisuje grupy nazwane jako (?P<nazwa>…).
Źródła i podstawa prawna
- ECMA-262 § 22.2: ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects
- MDN Web Docs – Regular expressions (Guide)
- MDN Web Docs – RegExp.prototype.flags
- MDN Web Docs – String.prototype.matchAll() (empty matches, lastIndex)
- OWASP – Regular expression Denial of Service (ReDoS)
Stan na:
Podobne narzędzia
- JSON formatter, walidator i minifikatorSprawdź JSON według RFC 8259: dokładna linia, kolumna i zrozumiały opis błędu. Formatowanie JSON, minifikacja, sortowanie kluczy – lokalnie w przeglądarce.
- Walidator XML i CSV onlineWalidator XML online: sprawdź poprawność składni XML i zgodność CSV z RFC 4180 – błędy z wierszem i kolumną, wykrywanie separatora, podgląd tabeli. Lokalnie.
- Kodowanie i dekodowanie Base64Kodowanie i dekodowanie Base64 oraz Base64url z poprawnym UTF-8, do tego kodowanie URL (percent-encoding). Jasne komunikaty błędów, działa w przeglądarce.
- Generator hash: SHA-256, SHA-512, SHA-1, MD5Generator hash online: oblicz SHA-256, SHA-384, SHA-512, SHA-1 i MD5 tekstu lub pliku i sprawdź sumę kontrolną – lokalnie w przeglądarce, bez wysyłania.
- Sprawdzanie poprawności adresu e-mailSprawdź poprawność adresów e-mail wg RFC 5321/5322: długość, etykiety domeny, domeny z polskimi znakami (Punycode). Także listy. Lokalnie, bez wysyłania.
- Algorytm Luhna: walidator i kalkulator cyfry kontrolnejSprawdź numer algorytmem Luhna (mod 10, ISO/IEC 7812-1) albo oblicz cyfrę kontrolną – tylko kontrola formatu, obliczenia działają lokalnie w przeglądarce.