Tester wyrażeń regularnych online: zaznacza dopasowania w tekście, pokazuje linię, kolumnę i grupy, robi podmianę z $1 i ostrzega przed wzorcami grożącymi zawieszeniem.
Regex Tester - Tester Wyrażeń Regularnych Online
Tester wyrażeń regularnych online: zaznacza dopasowania w tekście, pokazuje linię, kolumnę i grupy, robi podmianę z $1 i ostrzega przed wzorcami grożącymi zawieszeniem.
Parametry
Wprowadź dane do obliczeń
Regex tester: wzorzec, tekst i od razu widać, co pasuje
Wyrażenie regularne (regex) to wzorzec, który opisuje kawałek tekstu: „dwie cyfry, myślnik, trzy cyfry” to kod pocztowy ^\d{2}-\d{3}$. Tester zaznacza w tekście każde dopasowanie, podaje jego linię, kolumnę i zawartość grup, a po wpisaniu zamiennika pokazuje tekst po podmianie. Działa na silniku JavaScript V8, tym samym co w Chrome i Node.js, a pozostałe przeglądarki stosują ten sam standard ECMAScript, więc wzorzec sprawdzony tutaj zachowa się tak samo w kodzie strony.
/wzorzec/flagi, np. /abc/i.
- Wzorzec - własny albo gotowy z listy. Wpisany ma pierwszeństwo przed gotowym.
- Flagi - i (bez rozróżniania wielkości liter), m (^ i $ dla każdej linii), s (kropka łapie też koniec linii), u (pełny Unicode).
- Tekst - do 20 000 znaków, może mieć wiele linii.
- Podmiana - wszystkie dopasowania albo tylko pierwsze, zamiennik może używać $1, $<nazwa> i $&.
Osiem sytuacji, w których regex oszczędza ręcznej roboty
Przykład 1: które adresy e-mail z listy mają poprawną budowę
Sytuacja: gotowy wzorzec e-mail, cztery linie: jan.kowalski@firma.pl, zly@adres, ANNA+test@poczta.example.com, @brak.pl.
Wynik: 2 dopasowania, w liniach 1 i 3. Adres bez domeny najwyższego poziomu i adres bez nazwy użytkownika odpadają.
To wzorzec uproszczony, wystarczający do porządkowania listy. Pełna składnia adresu z RFC 5322 dopuszcza więcej, a ostatecznym testem jest i tak wysłanie wiadomości.
Przykład 2: kody pocztowe w kolumnie z arkusza
Sytuacja: wzorzec ^\d{2}-\d{3}$ z flagą m, linie 00-950, 44-100, 4410, 44-1000.
Wynik: 2 dopasowania. 44-1000 nie przechodzi dzięki znakowi $, który wymaga końca linii po trzeciej cyfrze.
Bez ^ i $ wzorzec znalazłby kod także w środku dłuższego ciągu.
Przykład 3: numery telefonów zapisane na kilka sposobów
Sytuacja: gotowy wzorzec telefonu, pięć linii: +48 600 700 800, 600-700-800, 600700800, 60070080, +48600700800.
Wynik: 4 dopasowania. Odpada tylko linia 4, bo ma 8 cyfr zamiast 9.
Wzorzec sprawdza format, nie to, czy numer istnieje.
Przykład 4: zamiana 07:30 na 07.30 grupami nazwanymi
Sytuacja: wzorzec (?<godz>\d{2}):(?<min>\d{2}), tekst start 07:30, koniec 16:45, podmiana wszystkich na $<godz>.$<min>.
Wynik: 2 dopasowania w kolumnach 7 i 21, w tabeli grupy godz: 07, min: 30 i godz: 16, min: 45. Po podmianie: start 07.30, koniec 16.45.
Nazwa w zamienniku jest czytelniejsza niż $1 i $2, zwłaszcza gdy grup jest kilka.
Przykład 5: \w a polskie litery
Sytuacja: wzorzec \w+, tekst Żółw i łódź.
Wynik: 3 dopasowania, ale to w, i i d. W JavaScript \w oznacza tylko A-Z, a-z, cyfry i podkreślnik, także z flagą u. Wzorzec [\p{L}\d_]+ z flagą u daje już Żółw, i i łódź.
Bez flagi u zadziała też jawna lista: [a-ząćęłńóśźż]+ z flagą i.
Przykład 6: kwoty w złotych i pułapka z przecinkiem
Sytuacja: wzorzec \d+(?:,\d{2})? zł, tekst Kawa 12,50 zł, ciastko 9 zł, rabat 1,5 zł.
Wynik: 3 dopasowania: 12,50 zł, 9 zł i 5 zł. Kwota „1,5” ma jedną cyfrę po przecinku, więc część dziesiętna nie pasuje i silnik bierze samo „5”. Poprawka: \d+(?:,\d{1,2})? zł łapie 1,5 zł w całości.
Podświetlenie w podglądzie od razu pokazuje, że dopasowanie zaczyna się w złym miejscu.
Przykład 7: czyszczenie tekstu ze znaczników i podwójnych spacji
Sytuacja: gotowy wzorzec „znaczniki HTML” na <p>Cena: <b>12 zł</b></p> z pustym zamiennikiem, potem „dwie i więcej spacji” na Cena netto: 120 zł z zamiennikiem w postaci jednej spacji.
Wynik: 4 znaczniki usunięte, zostaje Cena: 12 zł. W drugim tekście 2 dopasowania i wynik Cena netto: 120 zł.
Do jednorazowego czyszczenia regex wystarcza. Do przetwarzania całych stron HTML lepszy jest parser.
Przykład 8: wzorzec, który zawiesza program (ReDoS)
Sytuacja: wzorzec ^(a+)+$, tekst z 30 literami „a” i wykrzyknikiem na końcu.
Wynik: odmowa z opisem problemu. Przed pełnym przeszukaniem tester mierzy czas na coraz dłuższych początkach i końcach każdej linii, a tutaj rośnie on wykładniczo, bo silnik próbuje wszystkich sposobów podziału liter między dwa plusy.
Ten sam wzorzec w kodzie serwera, który sprawdza dane od użytkowników, to gotowy sposób na jego zablokowanie. Wystarczy ^a+$.
Ściąga ze składni wyrażeń regularnych
Najczęściej używane elementy w zapisie JavaScript. Kolumna „Uwaga” zbiera różnice, przez które wzorzec skopiowany z innego języka przestaje działać; wszystkie sprawdzone na silnikach JavaScript (Node.js) i Python (moduł re).
| Zapis | Znaczenie | Uwaga |
|---|---|---|
. | dowolny znak oprócz końca linii | z flagą s także koniec linii |
\d \w \s | cyfra, znak słowa, biały znak | \w nie obejmuje ą, ć, ę ... |
[abc] [^abc] | jeden ze znaków, żaden ze znaków | zakres [a-z] bez polskich liter |
^ $ | początek i koniec tekstu | z flagą m: każdej linii |
\b | granica słowa | \bkot\b nie znajdzie „kotek” |
* + ? | 0 lub więcej, 1 lub więcej, 0 lub 1 | z ? na końcu (+?) najkrócej |
{2} {1,3} | dokładnie 2, od 1 do 3 razy | {3,1} to błąd składni |
(…) (?:…) | grupa przechwytująca i bez przechwytywania | w zamienniku $1, $2 ... |
(?<nazwa>…) | grupa nazwana | Python: (?P<nazwa>…) |
(?=…) (?!…) | dalej jest / dalej nie ma | nie wchodzi do dopasowania |
(?<=…) (?<!…) | przed jest / przed nie ma | Python: tylko stała długość |
\p{L} | dowolna litera, także polska | tylko z flagą u; moduł re w Pythonie go nie zna |
a|b | a albo b | (a|a)* grozi ReDoS |
FAQ - wyrażenia regularne bez zgadywania
Powiązane narzędzia
Generator Cron
Wyrażenie crontab z listy albo rozbiór gotowego, po polsku i z najbliższymi terminami, także w noc zmiany czasu - Zobacz generator
JWT Decoder
Nagłówek i payload tokenu JWT, daty wygaśnięcia w czasie polskim i weryfikacja podpisu HS256 sekretem - Zobacz generator
Formatowanie JSON
Walidator JSON z numerem linii i kolumny błędu - Zobacz generator
Generator Danych Testowych
Fikcyjne PESEL-e, adresy e-mail i telefony do sprawdzania wzorców - Zobacz generator
Konwerter JSON na XML
Zamiana JSON na XML i z powrotem z kontrolą znaków - Zobacz generator
Generator Slugów URL
Tytuł na przyjazny adres bez polskich znaków i spacji - Zobacz generator
Kodowanie Base64
Tekst na Base64 i base64url do tokenów - Zobacz generator
Generator zweryfikowany przez zespół LiczGrupa.pl
Treść, wzory i wyniki zostały sprawdzone pod kątem poprawności i aktualności przez nasz zespół specjalistów.

Sprawdził: Krystian Szyszka