Instrukcja
Jak przetestować regex bez instalowania niczego
Napisałeś wzorzec i musisz wiedzieć, czy naprawdę dopasowuje to, czego oczekujesz, zanim wstawisz go do kodu. Instalowanie narzędzia na pulpicie albo wklejanie prywatnego logu na przypadkową stronę to przesada, a często i ryzyko. Ten przewodnik pokazuje, jak uruchomić regex na własnym tekście prosto w przeglądarce, przełączać flagi zmieniające zachowanie, odczytać grupy przechwytujące, które wyciąga, i obserwować podświetlone dopasowania w tekście, podczas gdy wzorzec i tekst nigdy nie opuszczają twojej karty.
Krok po kroku
- Otwórz tester regex i wpisz swój wzorzec w pole między dwoma ukośnikami. Ukośników nie piszesz sam: narzędzie je pokazuje, abyś widział wzorzec tak, jak czyta go silnik. Wklej swój przykładowy tekst w pole poniżej, na przykład kilka linii logu, listę adresów e-mail albo blok kodu, który chcesz przeszukać.

- Ustaw flagi w małym polu obok wzorca. Flaga g znajduje każde dopasowanie zamiast zatrzymywać się na pierwszym; i sprawia, że dopasowanie ignoruje wielkość liter; m sprawia, że kotwice ^ i $ dopasowują się do początku i końca każdej linii zamiast całego tekstu; s pozwala kropce dopasowywać także znaki nowej linii. Łącz je dowolnie, na przykład gim.
- Naciśnij Testuj. Każde dopasowanie jest podświetlone bezpośrednio w twoim tekście, a lista poniżej pokazuje każde dopasowanie z jego pozycją i wartością każdej grupy przechwytującej. Dostosuj wzorzec i uruchom ponownie: podgląd się aktualizuje, abyś mógł zawężać wzorzec, aż złapie dokładnie to, co miałeś na myśli, i nic więcej.

Grupy przechwytujące, nazwane i numerowane
Grupa przechwytująca to część twojego wzorca ujęta w nawiasy i to dzięki niej wyciągasz fragment z każdego dopasowania, zamiast tylko potwierdzać, że całość się dopasowała. Grupy numerowane są liczone od lewej do prawej według nawiasu otwierającego: w (\d{4})-(\d{2})-(\d{2}) grupa 1 to rok, grupa 2 miesiąc, grupa 3 dzień. Grupy nazwane używają składni (?<name>...), więc (?<year>\d{4}) czyta się znacznie lepiej niż goły numer, gdy wzorzec rośnie. Jeśli chcesz tylko grupować bez przechwytywania, na przykład by zastosować kwantyfikator do kilku znaków, użyj grupy nieprzechwytującej (?:...), aby nie zaśmiecała listy wyników. Tester pokazuje wartość każdej grupy dla każdego dopasowania, co jest najszybszym sposobem na potwierdzenie, że wyciągasz właściwy wycinek.
Gdy wzorzec się zawiesza lub źle zachowuje
Dwa problemy pojawiają się wciąż na nowo. Pierwszy to katastrofalne nawracanie: wzorzec taki jak (a+)+$ uruchomiony na długim niepasującym ciągu może zmusić silnik do wypróbowania wykładniczej liczby ścieżek i zamrozić się. Tester uruchamia każdy test w Web Worker z krótkim stróżnikiem, więc zamiast zawieszonej karty dostajesz jasny komunikat i możesz uprościć wzorzec, zwykle czyniąc kwantyfikator zachłannym w duchu posiadania, zakotwiczając go albo unikając zagnieżdżonego powtarzania. Drugi to dopasowanie zachłanne kontra leniwe: domyślnie .* łapie tyle, ile może, więc aby dopasować zawartość pojedynczego znacznika HTML, chcesz zamiast tego formy leniwej .*?. Jeśli porównujesz dwie nieco różne wersje ciągu, aby zobaczyć, w co powinien celować twój wzorzec, narzędzie do porównywania tekstu zestawia je tak, że różnica jest oczywista, zanim napiszesz wyrażenie.
Jak przeglądarka ocenia wyrażenie regularne
Nowoczesne przeglądarki mają wbudowany silnik regex ECMAScript obsługujący pełny zestaw flag: dopasowanie bez uwzględnienia wielkości liter (i), tryb wieloliniowy (m), dotAll (s), Unicode (u) i flaga sticky (y). Gdy wpisujesz wzorzec w testerze, silnik kompiluje go do wewnętrznego NFA i ocenia względem ciągu testowego w czasie rzeczywistym, raportując każdą pozycję dopasowania i wszelkie grupy przechwytywania. Cofanie się odbywa lokalnie na CPU: wzorzec jak (a+)+ na długim niedopasowanym ciągu może działać przez sekundy, a obserwowanie tego spowolnienia w przeglądarce jest przydatną informacją zwrotną przed wdrożeniem wzorca w kodzie produkcyjnym. Żaden tekst nie opuszcza strony, więc możesz wklejać przykłady logów lub dowolne dane wejściowe bez przekierowywania ich przez serwer trzeciej strony.
Narzędzia użyte w tym poradniku
Najczęściej zadawane pytania
Czy mój wzorzec lub tekst testowy jest wysyłany na serwer?
Nie. Regex działa wewnątrz Web Worker w twojej własnej przeglądarce, więc wzorzec i tekst, na którym testujesz, pozostają w karcie. Ma to znaczenie, ponieważ tekst, który wklejasz, to często prawdziwy log, lista klientów albo wewnętrzna konfiguracja, dokładnie ten rodzaj danych, których nie chcesz na cudzym serwerze. Otwórz panel Sieć w narzędziach deweloperskich, gdy naciskasz Testuj, a nie zobaczysz żadnego żądania wynoszącego twój tekst na zewnątrz. Działa też dalej w trybie offline, gdy strona się załaduje.
Której odmiany regex używa tester?
Używa silnika wyrażeń regularnych JavaScript wbudowanego w twoją przeglądarkę, tego samego, który działa w Node.js i na każdej stronie internetowej. Obejmuje to powszechną składnię: klasy znaków, kwantyfikatory, kotwice, alternatywę, numerowane i nazwane grupy przechwytujące, lookahead i lookbehind. Kilku funkcji z innych odmian, takich jak rekurencja w stylu Perla czy kwantyfikatory zaborcze, nie ma w silniku JavaScript, więc jeśli wzorzec skopiowany z projektu PHP lub Python zachowuje się inaczej, zwykle to właśnie ta różnica odmian jest powodem.