Tester wyrażeń regularnych
Testuj wyrażenia regularne JavaScript na żywo z podświetlaniem dopasowań, grupami przechwytującymi, zamianą tekstu i objaśnieniem każdego elementu wzorca.
| # | Pozycja | Dopasowanie | Grupy |
|---|
Objaśnienie wzorca
Uwaga: powtarzana grupa zawiera inny nieograniczony kwantyfikator, np. (a+)+. Takie wzorce mogą działać w czasie wykładniczym na tekście, który prawie pasuje (katastrofalny backtracking).
Jak korzystać z testera wyrażeń regularnych
- Wpisz wzorzec w pole Wyrażenie regularne, bez otaczających ukośników. Ukośniki i aktywne flagi są wyświetlane wokół pola, jak w
/wzorzec/g. - Zaznacz potrzebne Flagi:
g(global),i(ignoruj wielkość liter),m(multiline),s(dotAll),u(unicode) luby(sticky). - Wklej tekst do przeszukania w pole Tekst testowy. Dopasowania są podświetlane na bieżąco, a tabela pokazuje każde z nich z pozycją i grupami przechwytującymi.
- Aby wypróbować zamianę, wypełnij pole Zamiana. Okno Wynik po zamianie pokazuje tekst z podmienionymi dopasowaniami, gotowy do skopiowania.
- Przeczytaj Objaśnienie wzorca, aby sprawdzić, co robi każda część twojego wyrażenia. Nie wiesz, od czego zacząć? Kliknij Wczytaj przykład.
Co pokazuje tester
- Podświetlone dopasowania: każde dopasowanie w tekście testowym jest zaznaczone, więc od razu widać, co zostało złapane, a co pominięte.
- Tabela dopasowań: numer każdego dopasowania, jego pozycja (przesunięcie od początku tekstu liczone od 0), dopasowany tekst i wartość każdej grupy przechwytującej. Grupy nazwane, np.
(?<year>\d{4}), pojawiają się pod swoją nazwą, a grupy, które nie wzięły udziału w dopasowaniu, mają oznaczenie „(niedopasowana)”. Wyświetlanych jest pierwszych 1000 dopasowań. - Zamiana: tekst zamiany używa składni JavaScriptu:
$1lub$2dla grup numerowanych,$<name>dla grup nazwanych,$&dla całego dopasowania i$$dla dosłownego znaku dolara. Bez flagigzamieniane jest tylko pierwsze dopasowanie. - Objaśnienie: wzorzec jest dzielony na elementy (dosłowny tekst, klasy znaków, kotwice, grupy, kwantyfikatory, asercje lookaround, odwołania wsteczne), każdy z krótkim opisem. Zagnieżdżone grupy mają wcięcie, co bardzo ułatwia przegląd długich wzorców.
Flagi w skrócie
| Flaga | Działanie |
|---|---|
g |
Znajduje wszystkie dopasowania, zamiast zatrzymać się na pierwszym |
i |
Ignoruje różnicę między wielkimi a małymi literami |
m |
^ i $ pasują na początku i końcu każdej linii |
s |
. pasuje także do znaku końca linii |
u |
Pełny tryb Unicode: \u{…}, \p{…} i emoji traktowane jako pojedyncze znaki |
y |
Sticky: każde dopasowanie musi zaczynać się dokładnie tam, gdzie skończyło się poprzednie |
Przy polskim tekście pamiętaj, że \w w JavaScripcie obejmuje tylko litery ASCII: „ą”, „ł” czy „ż” nie są znakami słowa. Aby dopasować dowolne litery, użyj flagi u i \p{L}.
Katastrofalny backtracking
Niektóre wzorce działają w czasie wykładniczym na tekście, który prawie pasuje. Klasyczny przykład to (a+)+$ testowane na długim ciągu liter a zakończonym b: silnik próbuje każdego sposobu podziału liter a między dwa kwantyfikatory, zanim się podda. Ten problem, znany jako ReDoS, kładł już prawdziwe serwisy.
Narzędzie chroni twoją przeglądarkę na trzy sposoby. Dopasowywanie działa w wątku w tle (workerze), który jest zatrzymywany po 1,5 sekundy; tekst testowy jest ograniczony do 100 000 znaków; a objaśnienie ostrzega, gdy powtarzana grupa zawiera inny nieograniczony kwantyfikator. Jeśli wzorzec przekroczy limit czasu, przepisz go tak, aby każdy znak dało się dopasować tylko na jeden sposób, np. a+$ zamiast (a+)+$.
Najczęściej zadawane pytania
Jakiej odmiany regex używa to narzędzie?
Silnika JavaScriptu (ECMAScript) w twojej przeglądarce, dokładnie tak, jak działałyby new RegExp() i String.prototype.replace() w twoim kodzie. Większość składni jest wspólna z PCRE, Pythonem i Javą, ale niektóre funkcje się różnią: kwantyfikatory zaborcze i grupy atomowe w JavaScripcie nie istnieją, a lookbehind obsługują wszystkie aktualne przeglądarki.
Dlaczego mój wzorzec znajduje tylko jedno dopasowanie?
Flaga g jest wyłączona. Bez niej JavaScript zatrzymuje się po pierwszym dopasowaniu i tylko ono zostaje zamienione.
Jak dopasować dosłowną kropkę, nawias lub znak zapytania?
Poprzedź go ukośnikiem wstecznym: \., \[, \?. Objaśnienie oznacza takie znaki dopiskiem „(poprzedzony ukośnikiem)”, więc łatwo to sprawdzić.
Czy mój tekst jest gdzieś wysyłany?
Nie. Wzorzec i tekst są przetwarzane wyłącznie w twojej przeglądarce, więc narzędzie nadaje się też do plików logów czy danych zawierających dane osobowe.
Dlaczego pozycja różni się od kolumny w moim edytorze?
Pozycje liczą znaki od 0, przez wszystkie linie, tak jak match.index w JavaScripcie. Znak końca linii liczy się jako jeden znak, a emoji spoza podstawowej płaszczyzny Unicode (BMP) – jako dwa.
Podobne narzędzia
- Formatowanie i walidacja JSON Darmowe narzędzie do formatowania i walidacji JSON: upiększa, minifikuje i sprawdza JSON w przeglądarce, wskazując wiersz i kolumnę błędu.
- Koder i dekoder URL Darmowy koder i dekoder URL. Koduj procentowo parametry zapytań lub całe adresy, dekoduj sekwencje %XX i obsługuj + jako spację. Działa w przeglądarce.
- Generator hashy Generuj hashe MD5, SHA-1, SHA-256 i SHA-512 z tekstu lub plików dowolnej wielkości i sprawdzaj sumy kontrolne. Wszystko działa w twojej przeglądarce.