tigtools

Tester wyrażeń regularnych

Wpisz wzorzec i tekst, aby zobaczyć wszystkie podświetlone dopasowania wraz z ich pozycjami i grupami przechwytującymi. Narzędzie korzysta z silnika wyrażeń regularnych JavaScript w Twojej przeglądarce.

Działa w przeglądarce Bez rejestracji

Flagi

Użyj $1, $2 … dla grup numerowanych, $<name> dla grup nazwanych, $& dla całego dopasowania i $$ dla znaku dolara.

Jak używać

  1. Wpisz wyrażenie regularne w polu Wzorzec, bez otaczających je ukośników.
  2. Zaznacz potrzebne flagi. Flaga g (global) znajduje wszystkie dopasowania zamiast tylko pierwszego.
  3. Wklej tekst do przeszukania. Dopasowania zostaną podświetlone i wyświetlone wraz z pozycją oraz grupami przechwytującymi.
  4. Opcjonalnie wpisz zamianę, na przykład $2-$1, aby wyświetlić podgląd wyniku działania String.replace.

Jak to działa

Tester uruchamia wzorzec za pomocą wbudowanego w przeglądarkę obiektu RegExp, więc wyniki są dokładnie takie, jakie uzyskałby kod JavaScript (ECMAScript) w tej przeglądarce. Inne języki używają różnych odmian regex: PCRE (PHP), moduł re w Pythonie, Java i .NET obsługują funkcje, których brakuje w JavaScript, takie jak kwantyfikatory zachłanne (a++), grupy atomowe ((?>…)), modyfikatory wbudowane, np. (?i), i rekurencja. Różnią się też szczegółami, takimi jak kotwice \A i \Z. Zanim zaczniesz polegać na wzorcu w innym języku, przetestuj go właśnie w nim. Wyrażenia lookbehind ((?<=…)), grupy nazwane ((?<name>…)) i znaki Unicode (\p{L} z flagą u) działają we wszystkich aktualnych przeglądarkach.

Bez flagi g lub y wyszukiwane jest tylko pierwsze dopasowanie, tak jak w RegExp.exec. Dopasowania o zerowej długości, na przykład dla ^ lub \b, są wyświetlane, ale nie są podświetlane. Po takim dopasowaniu wyszukiwanie przesuwa się o jeden znak (jeden punkt kodowy z flagą u), tak jak w String.matchAll. Grupy przechwytujące są wyświetlane według numerów, a jeśli mają nazwy — również według nazw. Grupa, która nie brała udziału w dopasowaniu, jest oznaczona jako pozbawiona wartości; różni się to od pustego dopasowania.

Niektóre wzorce, takie jak (a+)+$ w długim wierszu bez dopasowania, mogą wymagać wykładniczo długiego czasu, zanim zakończą się niepowodzeniem (katastrofalne cofanie). Aby ograniczyć ryzyko, wyszukiwanie rozpoczyna się chwilę po zakończeniu pisania, sprawdzane jest tylko pierwszych 100 000 znaków tekstu, a zebranych zostaje najwyżej 1 000 dopasowań. Patologiczny wzorzec nadal może na pewien czas zawiesić kartę. W takim przypadku uprość wzorzec lub skróć tekst.

Przykłady

Wyodrębnianie dat

Wzorzec (\d{4})-(\d{2})-(\d{2}) z włączoną flagą g znajduje dwa dopasowania w tekście „Due 2026-03-15, paid 2026-04-02”. Grupa 1 to rok; zamiana $3.$2.$1 zmienia tekst na „Due 15.03.2026, paid 02.04.2026”.

Grupy nazwane — czytelniejszy kod

Wzorzec (?<key>\w+)=(?<value>[^&]*) w ciągu zapytania a=1&b=two wyświetla wartości key i value dla każdej pary, zgodnie z tym, co w JavaScript zwracają match.groups.key i match.groups.value.

Wyszukiwanie bez rozróżniania wielkości liter w wielu wierszach

Wzorzec ^error:.* z flagami g, i i m dopasowuje każdy wiersz logu rozpoczynający się od Error:, ERROR: lub error:, ponieważ flaga m sprawia, że ^ oznacza początek każdego wiersza.

Często zadawane pytania

Czy moje wyrażenie regularne będzie działać tak samo w Pythonie, PHP lub Javie?

Niekoniecznie. To narzędzie korzysta z silnika JavaScript. Podstawowa składnia jest wspólna, ale funkcje takie jak kwantyfikatory zachłanne, grupy atomowe, flagi wbudowane, np. (?i), i niektóre sekwencje ucieczki występują tylko w innych odmianach regex, a część elementów działa inaczej. Zawsze testuj wzorzec w języku docelowym.

Dlaczego znaleziono tylko jedno dopasowanie?

Flaga g (global) jest wyłączona. Bez niej JavaScript zwraca tylko pierwsze dopasowanie. Zaznacz g, aby znaleźć wszystkie dopasowania.

Czy mam wpisać ukośniki wokół wzorca?

Nie. Wpisz sam wzorzec, na przykład \d+, a nie /\d+/g, i wybierz flagi za pomocą pól wyboru. Zapis literałowy JavaScript jest wyświetlany pod wynikami, aby można go było skopiować do kodu.

Dlaczego strona zwolniła przy moim wzorcu?

Zagnieżdżone kwantyfikatory, takie jak (a+)+ lub (.*)*, mogą zmusić silnik do sprawdzenia wykładniczej liczby ścieżek, gdy nie ma dopasowania. Doprecyzuj wzorzec, na przykład zastępując .* przez [^,]*, albo użyj kotwic. Aby ograniczyć wpływ, tester ogranicza tekst do 100 000 znaków.

Prywatność

Wzorzec i tekst są przetwarzane wyłącznie w przeglądarce przez jej silnik JavaScript. Żadne dane nie są przesyłane, przechowywane ani uwzględniane w statystykach.