Tester regex dla JavaScript

Wpisz wyrażenie regularne i zobacz każde dopasowanie podświetlone na bieżąco, z grupami przechwytującymi, podglądem zamiany i biblioteką gotowych wzorców.

Działa w przeglądarceBez rejestracjiNic nie jest wysyłane

Podświetlone dopasowania

    
Użyj $1, $<name>, $& (całe dopasowanie)
Szczegóły dopasowań
#IndeksDopasowanieGrupy
Ściąga regex
.Dowolny znak oprócz nowej linii (dowolny z s)
\d \w \sCyfra, znak słowa, biały znak
\D \W \SNie cyfra, nie znak słowa, nie biały znak
[abc] [^abc]Dowolny z / żaden z a, b, c
[a-z0-9]Zakres znaków
\p{L} \p{N}Litera / cyfra Unicode (wymaga u)
^ $Początek / koniec danych (linii z m)
\b \BGranica słowa / brak granicy
* + ?0 lub więcej, 1 lub więcej, 0 lub 1
{n} {n,} {n,m}Dokładnie n, co najmniej n, od n do m
*? +? ??Leniwy (jak najmniej)
a|ba lub b
(…)Grupa przechwytująca, odwołanie przez $1
(?<name>…)Grupa nazwana, $<name>
(?:…)Grupa nieprzechwytująca
\1 \k<name>Odwołanie wsteczne
(?=…) (?!…)Lookahead / negatywny lookahead
(?<=…) (?<!…)Lookbehind / negatywny lookbehind
\. \* \\Escapowane znaki dosłowne
\n \t \rNowa linia, tabulator, powrót karetki
\uFFFFJednostka kodowa Unicode
\u{1F600}Punkt kodowy (wymaga u)
$&Całe dopasowanie w zamianie
$` $'Tekst przed / po dopasowaniu

Jak używać: Tester regex

  1. Wpisz wzorzec między ukośnikami, bez otaczających /.
  2. Przełączaj flagi, takie jak g (wszystkie dopasowania), i (bez rozróżniania wielkości liter) i m (wielowierszowy).
  3. Wklej tekst testowy. Dopasowania są podświetlane po prawej i wypisywane poniżej z indeksem i grupami przechwytującymi.
  4. Zaznacz Zamień i wpisz zamiennik, np. $1 lub $<name>, aby podejrzeć działanie String.replace.
  5. Wybierz wzorzec z Biblioteki wzorców, aby zacząć od sprawdzonego regexa dla e-maila, URL, IP lub daty.

Wyrażenia regularne w JavaScript

Ten tester używa wbudowanego silnika RegExp Twojej przeglądarki, więc wyniki są dokładnie takie, jakie zwracają String.match, matchAll, replace i RegExp.exec w JavaScripcie i Node.js. Obejmuje to nowoczesną składnię: grupy nazwane (?<name>…), lookbehind (?<=…), klasy właściwości Unicode, takie jak \p{L} z flagą u, oraz indeksy dopasowań z flagą d.

Co robią flagi

FlagaNazwaDziałanie
gglobalZnajduje każde dopasowanie zamiast zatrzymać się na pierwszym.
iignoreCaseLitery pasują bez względu na wielkość.
mmultiline^ i $ pasują na początku i końcu każdej linii.
sdotAll. pasuje także do znaków nowej linii.
uunicodeTraktuje wzorzec jako punkty kodowe; włącza \p{…} i \u{…}.
ystickyDopasowuje tylko na bieżącej pozycji lastIndex.
dhasIndicesPodaje pozycje początku i końca każdej grupy przechwytującej.

Ochrona przed katastrofalnym backtrackingiem

Wzorce z zagnieżdżonymi kwantyfikatorami, np. (a+)+$ lub (\w|\d)*x, mogą działać w czasie wykładniczym na danych, które prawie pasują. Na zwykłej stronie zawiesza to kartę. Tutaj każde dopasowanie działa w tle w Web Workerze, który jest zatrzymywany po jednej sekundzie, a Ty dostajesz jasne ostrzeżenie zamiast zawieszonej przeglądarki. Ten sam wzorzec w kodzie produkcyjnym może być podatnością ReDoS, więc traktuj ostrzeżenie jako błąd do naprawienia.

Wskazówki do pisania lepszych regexów

  • Kotwicz wzorce za pomocą ^ i $ przy walidacji całych wartości, inaczej przejdzie dopasowanie w dowolnym miejscu ciągu.
  • Preferuj konkretne klasy, np. [^"]*, zamiast .*; są szybsze i nie dopasowują za dużo.
  • Używaj grup nieprzechwytujących (?:…), gdy nie potrzebujesz przechwyconej wartości.
  • Nazywaj grupy. match.groups.year czyta się łatwiej niż match[1].

Najczęściej zadawane pytania

Jakiej odmiany regex używa ten tester?
JavaScript (ECMAScript), przez wbudowany w przeglądarkę RegExp. Większość składni jest wspólna z PCRE, Pythonem i Javą, ale funkcje takie jak kwantyfikatory zaborcze, grupy atomowe i modyfikatory inline, np. (?i), nie są dostępne w JavaScripcie.
Dlaczego mój wzorzec znajduje tylko jedno dopasowanie?
Bez flagi g (global) JavaScript zatrzymuje się po pierwszym dopasowaniu. Włącz g, aby znaleźć wszystkie wystąpienia.
Jak odwołać się do grup w zamianie?
Użyj $1, $2… dla grup numerowanych, $<name> dla grup nazwanych, $& dla całego dopasowania i $$ dla dosłownego znaku dolara.
Dlaczego tester zatrzymał się z przekroczeniem czasu?
Wzorzec działał na Twoich danych dłużej niż sekundę, co niemal zawsze oznacza katastrofalny backtracking. Poszukaj zagnieżdżonych kwantyfikatorów, np. (x+)+, lub nakładających się alternatyw, np. (a|a)*, i przepisz je tak, aby każdy znak mógł zostać dopasowany tylko na jeden sposób.
Czy moje dane testowe są gdzieś wysyłane?
Nie. Dopasowywanie działa lokalnie w Web Workerze w przeglądarce. Wzorzec i tekst są zapisywane tylko w Twojej przeglądarce, aby czekały na Ciebie przy kolejnej wizycie.

Powiązane narzędzia