Informatyka
Tester wyrażeń regularnych
Wpisz wzorzec, flagi i tekst: od razu zobaczysz podświetlone dopasowania, grupy przechwytujące każdego z nich i, jeśli chcesz, tekst po zamianie. Silnik to JavaScript twojej przeglądarki.
Wyrażenia regularne w praktyce
Wyrażenie regularne opisuje zbiór napisów: \d{4}-\d{2}-\d{2} rozpoznaje daty zapisane jako 2025-03-14, \d{2}-\d{3} polski kod pocztowy. Nawiasy okrągłe tworzą grupy przechwytujące, które zamiana może wykorzystać jako $1, $2 lub po nazwie, jeśli grupa ją ma.
Flagi zmieniają działanie: g szuka wszystkich dopasowań zamiast pierwszego, i ignoruje wielkość liter, m sprawia, że ^ i $ działają w każdej linii, s pozwala kropce dopasować znak nowej linii, u włącza klasy Unicode, takie jak \p{L}. Bez g zamiana zmienia tylko pierwsze wystąpienie.
Niektóre wzorce, jak (a+)+$ czy (\w+\s?)*$, na tekście, który prawie pasuje, sprawdzają wykładniczą liczbę kombinacji i mogą zawiesić przeglądarkę lub serwer: to ReDoS. Tutaj test działa w osobnym procesie i jest przerywany po sekundzie, więc strona pozostaje używalna i informuje o problemie.
Częste błędy
- Zapominanie o podwojeniu ukośników wstecznych, gdy wyrażenie trafia do napisu w kodzie: tu pisze się \d, w napisie JavaScript "\\d".
- Używanie .* tam, gdzie potrzeba .*?: zachłanny kwantyfikator zabiera wszystko aż do ostatniego możliwego wystąpienia.
- Zagnieżdżanie kwantyfikatorów, jak (a+)+ lub (a|a)*: to najczęstsza przyczyna katastrofalnego backtrackingu.
Najczęstsze pytania
Jakiego silnika wyrażeń regularnych używa tester?
Silnika JavaScript (ECMAScript) twojej przeglądarki. Jest bardzo podobny do PCRE z PHP, ale brakuje niektórych funkcji, np. grup atomowych i kwantyfikatorów zaborczych.
Jak użyć grupy w zamianie?
Przez $1, $2… dla grup numerowanych, $ z nazwą w nawiasach ostrych dla nazwanych i $& dla całego dopasowania. Dosłowny znak dolara zapisuje się jako $$.
Czy wpisany tekst jest gdzieś wysyłany?
Nie: wszystko dzieje się w przeglądarce. Wzorzec i tekst trafiają tylko do adresu strony, aby można ją było udostępnić, i tylko wtedy, gdy są krótkie.
Jak działa to obliczenie
Wzorzec jest kompilowany przez new RegExp(wzorzec, flagi) i stosowany przez String.prototype.matchAll, zawsze z dodaną flagą g, aby przejść przez tekst; bez g w zapytaniu zostaje tylko pierwsze dopasowanie. Zamiana używa String.prototype.replace z wybranymi flagami. Wykonanie odbywa się w Web Workerze, który jest kończony, jeśli nie odpowie w ciągu 1 sekundy; wyświetla się najwyżej 1000 dopasowań.
Powiązane kalkulatory
Formatowanie i walidacja JSON
Formatuj, minifikuj i sprawdzaj JSON: wcięcia, sortowane klucze i dokładne położenie błędów.
Kodowanie URL
Kodowanie i dekodowanie procentowe wartości i adresów oraz adres URL rozłożony na części.
Konwerter Base64
Z tekstu, liczby całkowitej, szesnastkowego lub binarnego na Base64 i z powrotem, z grupami 6 bitów.
Wyrażenia cron wyjaśnione
Przełóż wyrażenie cron na słowa i zobacz najbliższe uruchomienia, pole po polu.