Przejdź do treści
helpyself

Tester wyrażeń regularnych

Local only — nothing is uploaded unless you save or share it.

Tester wyrażeń regularnych, uruchamianych bezpiecznie na twoim własnym tekście.

  1. Wpisz swój wzorzec i wybierz potrzebne flagi
  2. Wklej tekst, na którym chcesz go sprawdzić
  3. Przeczytaj podświetlone dopasowania i grupy przechwytujące poniżej
//

Zapisz to narzędzie

Miej Tester wyrażeń regularnych pod ręką

Dodaj do zakładek

O tym narzędziu

Wyrażenia regularne są zwięzłe i bezlitosne, a zwykły sposób nauki jednego z nich to zmienić znak i zobaczyć, co się stanie. Ten tester czyni tę pętlę natychmiastową: dopasowania podświetlają się w trakcie pisania, każda grupa przechwytująca wypisana jest wraz z wartością, a błędy składni zgłaszane są zwykłymi słowami, zamiast po cichu zwracać nic. Korzysta z javascriptowego silnika wyrażeń regularnych twojej przeglądarki, więc to, co widzisz tutaj, jest dokładnie tym, co zrobi twój kod, łącznie z zachowaniem flag i grupami nazwanymi. Jedna rzecz warta wiedzy: wzorzec uruchamiany jest w wątku w tle, a nie na stronie. Pewne wzorce, zwłaszcza zagnieżdżone powtórzenie w rodzaju klasycznego powtórzonego a-plus w nawiasach, potrafią przy niektórych danych zająć wykładniczo długi czas, a JavaScript nie daje żadnego sposobu na przerwanie raz uruchomionego wyrażenia. Większość testerów w sieci zamraża wtedy kartę. Tutaj wątek w tle jest po prostu porzucany, a tobie mówi się, że wzorzec trwał zbyt długo — co jest też pożyteczną przestrogą, że ten sam wzorzec zablokowałby twój serwer.

Najczęstsze pytania

Która odmiana wyrażeń regularnych to jest?

JavaScript, z użyciem silnika twojej własnej przeglądarki. To znaczy, że widzisz tu dokładnie to, co zrobi twój kod w JavaScripcie albo TypeScripcie. Wzorce pisane pod PCRE, Pythona albo Go mogą zachowywać się inaczej, zwłaszcza wokół lookbehind i sekwencji właściwości Unicode.

Czy mogę powierzyć temu testerowi powolny wzorzec?

Tak, i to jest powód, dla którego istnieje w tym kształcie. Tester wyrażeń regularnych uruchamiający wzorzec na stronie da się zawiesić katastrofalnym nawracaniem — wzorcem, który na krótkim ciągu zajmuje minuty. Tutaj twój działa w workerze z limitem czasu, więc rozbiegany wzorzec jest zgłaszany, a nie zamraża karty.

Co oznacza przekroczenie czasu?

Twój wzorzec zbyt długo się nie kończył. Zagnieżdżone powtórzenie w rodzaju (a+)+ potrafi przy pewnych danych zająć wykładniczo długi czas, a problem ten znany jest jako katastrofalne nawracanie. To prawdziwa przestroga: ten sam wzorzec na produkcji zawiesiłby żądanie, a nie tylko kartę przeglądarki.

Dlaczego mój wzorzec wiesza inne testery, a tego nie?

Bo dopasowanie działa tutaj w wątku w tle. JavaScript nie potrafi przerwać działającego wyrażenia, więc tester liczący na stronie nie ma jak się pozbierać i karta zamarza. Wątek w tle można po prostu porzucić.

Czym różni się flaga global od braku flagi?

Bez flagi global zwracane jest tylko pierwsze dopasowanie. Z nią dopasowywanie biegnie przez cały ciąg. Zmienia też sposób, w jaki silnik śledzi pozycję między wywołaniami, co bywa częstym źródłem zaskakujących zachowań przy ponownym użyciu obiektu wyrażenia.

Czy obsługiwane są nazwane grupy przechwytujące?

Tak. Grupy zapisane jako (?<nazwa>...) wypisywane są wraz z nazwami obok grup numerowanych, żebyś mógł potwierdzić, że przechwytują to, czego oczekujesz, zanim wepniesz je w kod.

Pomóż ulepszyć to narzędzie

Znalazłeś błąd, chcesz zmiany albo brakuje Ci jakiegoś narzędzia?

/regex-tester

↑↓ nawigacja · Enter otwiera · Esc zamyka