Testování regulárních výrazů v JavaScriptu
Regulární výrazy jsou nástrojem pro vyhledávání, validaci a manipulaci s textem na základě definovaných vzorů. Tento online nástroj umožňuje testovat regulární výrazy JavaScriptu na libovolném ukázkovém textu přímo ve webovém prohlížeči. Nástroj okamžitě zvýrazňuje nalezené shody a zachycené skupiny, což usnadňuje analýzu chování zvoleného vzoru při různých vstupech.
Vyhodnocování zadaného vzoru a textu probíhá lokálně v prohlížeči uživatele. Na servery BroBroGo se nic nenahrává, což zajišťuje, že zpracovávaná data neopouštějí vaše zařízení.
Vstupy nástroje
Pro spuštění testu je vyžadováno zadání dvou hlavních parametrů a volitelná konfigurace vyhledávacích příznaků:
- Vzor (Pattern): Samotný regulární výraz, který definuje vyhledávací masku. Výchozím příkladem v rozhraní je vzor
\d+. - Příznaky: Volby ovlivňující chování vyhledávacího enginu JavaScriptu:
- g (Globální): Vyhledá všechny shody v celém textu namísto ukončení práce po nalezení první shody.
- i (Ignorovat velikost písmen): Nerozlišuje mezi velkými a malými písmeny.
- m (Víceřádkový režim): Upravuje chování meta-znaků
^a$, které nově odpovídají začátku a konci každého jednotlivého řádku namísto začátku a konce celého textového řetězce. - s (Tečka odpovídá novému řádku): Umožňuje meta-znaku tečky (
.) odpovídat i znakům konce řádku.
- Testovaný řetězec: Libovolný text, na kterém chcete zadaný vzor otestovat. Výchozím textem v rozhraní je "Vložte nebo napište text, na kterém chcete vzor otestovat".
Výstupy a interpretace výsledků
Po zadání vzoru a testovacího textu nástroj okamžitě generuje vizuální a strukturované výsledky:
- Zvýrazněné shody: Testovaný řetězec se zobrazí s barevným zvýrazněním všech nalezených shod a jednotlivých zachycených skupin.
- Shody: Strukturovaný seznam všech nalezených výsledků. Pokud vzor obsahuje závorky definující zachytávací skupiny, zobrazí se u každé shody také položka Skupina
{n}s konkrétním zachyceným podřetězcem. - Shody:
{count}: Ukazatel celkového počtu nalezených shod v textu. - Znaky: Celkový počet znaků v testovaném řetězci.
Pravidla zpracování a limitní stavy
Při práci s regulárními výrazy mohou nastat specifické situace, které nástroj ošetřuje následujícími pravidly:
- Pokud zadaný vzor neodpovídá žádné části textu, zobrazí se hlášení Žádné shody..
- V případě syntaktické chyby v zapsaném regulárním výrazu nástroj zobrazí chybové hlášení Neplatný regulární výraz..
- Pokud není aktivován globální příznak g, vyhledá se a zobrazí pouze první shoda v textu.
- Při aktivním příznaku g je z výkonnostních důvodů nastaven limit pro vyhledávání na maximálně 1 000 shod.
- Při aktivním příznaku g nástroj vygeneruje maximálně 100 karet jednotlivých shod v detailním přehledu. Pokud počet shod překročí tento limit, zobrazí se upozornění Zobrazuje se prvních
{max}.. - Kliknutím na tlačítko Vymazat dojde k vyčištění všech polí a zobrazení stavové zprávy Vymazáno..
Prevence katastrofálního zpětného vyhledávání
Jedním z nejčastějších problémů při psaní regulárních výrazů je takzvané katastrofální zpětné vyhledávání (catastrophic backtracking). K tomuto jevu dochází u nevhodně navržených vzorů s vnořenými duplicitami (například typu (a+)+), kdy se engine snaží prozkoumat enormní množství kombinací možného spárování u textu, který vzoru neodpovídá.
Tento proces může extrémně zatížit procesor a způsobit zamrznutí záložky prohlížeče. Nástroj proto obsahuje bezpečnostní pojistku: pokud vyhodnocování vzoru trvá déle než 2 sekundy, proces se automaticky stornuje a zobrazí se varování: Vyhodnocení tohoto vzoru trvá příliš dlouho – může jít o extrémně pomalý výraz. Zkuste ho zjednodušit.. Pro nápravu je nutné zjednodušit strukturu výrazu a eliminovat překrývající se volitelné skupiny.
Často kladené otázky
Je bezpečné sem vložit můj text?
Ano. Vyhodnocování regulárního výrazu probíhá kompletně ve vašem prohlížeči – do služby BroBroGo se nic neodesílá.
Co znamenají příznaky g/i/m/s?
Příznak g vyhledá všechny shody namísto pouze první. Příznak i ignoruje velikost písmen. Příznak m způsobí, že ^ a $ odpovídají začátku a konci každého řádku namísto celého řetězce. Příznak s umožňuje, aby tečka (.) odpovídala i znakům konce řádku.
Proč se zobrazilo upozornění, že vyhodnocení vzoru trvá příliš dlouho?
Některé vzory mohou způsobit tzv. katastrofální zpětné vyhledávání (catastrophic backtracking) – engine zkouší exponenciální množství kombinací, než vyhledávání vzdá, což může způsobit zamrznutí záložky prohlížeče. Tento nástroj v takovém případě vyhledávání po 2 sekundách zruší, takže samotná stránka nezamrzne. Zkuste zjednodušit vnořená opakování typu (a+)+.