Tester regulárních výrazů
Testuj regulární výrazy JavaScriptu naživo: zvýrazněné shody, zachytávací skupiny, nahrazování a srozumitelné vysvětlení každé části výrazu.
| # | Pozice | Shoda | Skupiny |
|---|
Vysvětlení výrazu
Pozor: opakovaná skupina obsahuje další neomezený kvantifikátor, například (a+)+. Takové výrazy mohou na textu, který se skoro shoduje, trvat exponenciálně dlouho (katastrofální backtracking).
Jak používat tester regulárních výrazů
- Napiš výraz do pole Regulární výraz, bez okolních lomítek. Lomítka a aktivní příznaky se zobrazují kolem pole, například
/výraz/g. - Zaškrtni potřebné Příznaky:
g(global),i(ignorovat velikost písmen),m(multiline),s(dotAll),u(unicode) neboy(sticky). - Vlož text k prohledání do pole Testovací text. Shody se zvýrazňují během psaní a tabulka uvádí každou shodu s pozicí a zachytávacími skupinami.
- Chceš-li vyzkoušet nahrazení, vyplň Náhradu. Pole Výsledek po nahrazení ukáže text s každou shodou nahrazenou, připravený ke zkopírování.
- V části Vysvětlení výrazu zkontroluj, co dělá každá část regexu. Nevíš, kde začít? Klikni na Načíst příklad.
Co tester zobrazuje
- Zvýrazněné shody: každá shoda v testovacím textu je označena, takže na první pohled vidíš, co se zachytí a co unikne.
- Tabulka shod: číslo každé shody, její pozice (posun ve znacích od začátku, počítáno od 0), shodný text a hodnota každé zachytávací skupiny. Pojmenované skupiny jako
(?<year>\d{4})se zobrazí pod svým názvem a skupiny, které se shody neúčastnily, jsou uvedeny jako „(nezachyceno)“. Vypíše se prvních 1 000 shod. - Náhrada: text náhrady používá syntaxi JavaScriptu:
$1nebo$2pro číslované skupiny,$<name>pro pojmenované skupiny,$&pro celou shodu a$$pro doslovný znak dolaru. Bez příznakugse nahradí jen první shoda. - Vysvětlení: výraz se rozdělí na tokeny (doslovný text, třídy znaků, kotvy, skupiny, kvantifikátory, lookaround, zpětné odkazy), každý s krátkým popisem. Vnořené skupiny jsou odsazené, což dlouhé výrazy mnohem usnadňuje kontrolu.
Příznaky stručně
| Příznak | Účinek |
|---|---|
g |
Najde všechny shody místo zastavení u první |
i |
Ignoruje rozdíl mezi velkými a malými písmeny |
m |
^ a $ se shodují se začátkem a koncem každého řádku |
s |
. zahrnuje i zalomení řádků |
u |
Plný režim Unicode: \u{…}, \p{…} a emoji se berou jako jednotlivé znaky |
y |
Sticky: každá shoda musí začínat přesně tam, kde skončila předchozí |
Katastrofální backtracking
Některé výrazy trvají na textu, který se skoro shoduje, exponenciálně dlouho. Klasickým příkladem je (a+)+$ testované na dlouhé řadě písmen a následované b: engine zkouší každý způsob rozdělení písmen a mezi dva kvantifikátory, než to vzdá. Tento problém, známý jako ReDoS, už vyřadil skutečné weby.
Tento nástroj chrání tvůj prohlížeč třemi způsoby. Hledání běží v pracovním vlákně na pozadí, které se po 1,5 sekundě zastaví; testovací text je omezen na 100 000 znaků; a vysvětlení tě varuje, když opakovaná skupina obsahuje další neomezený kvantifikátor. Když výraz překročí časový limit, přepiš ho tak, aby se každý znak dal zachytit jen jedním způsobem, například a+$ místo (a+)+$.
Časté dotazy
Jakou variantu regexu nástroj používá?
Používá engine JavaScriptu (ECMAScript) ve tvém prohlížeči, přesně jako new RegExp() a String.prototype.replace() ve tvém kódu. Většina syntaxe je společná s PCRE, Pythonem a Javou, ale některé vlastnosti se liší: přivlastňovací kvantifikátory a atomické skupiny v JavaScriptu neexistují a lookbehind podporují všechny současné prohlížeče.
Proč můj výraz najde jen jednu shodu?
Příznak g je vypnutý. Bez něj se JavaScript zastaví po první shodě a nahrazení změní jen ji.
Jak zachytím doslovnou tečku, hranatou závorku nebo otazník?
Escapuj je zpětným lomítkem: \., \[, \?. Vysvětlení zobrazuje escapované znaky jako „(escapovaný)“, takže si to můžeš ověřit.
Odesílá se můj text někam?
Ne. Výraz i text se zpracovávají jen ve tvém prohlížeči, takže je nástroj bezpečný i pro soubory protokolů nebo data s osobními údaji.
Proč se pozice liší od sloupce v mém editoru?
Pozice se počítají ve znacích od 0 přes všechny řádky, tak jako match.index v JavaScriptu. Zalomení řádku se počítá jako jeden znak a emoji mimo základní vícejazyčnou rovinu se počítá jako dva.
Související nástroje
- Formátovač a validátor JSON Bezplatný formátovač a validátor JSON, který zpřehlední, minifikuje a ověří JSON ve tvém prohlížeči a syntaktické chyby hlásí s řádkem a sloupcem.
- Kódování a dekódování URL Bezplatné kódování a dekódování URL. Procentově zakóduj parametry dotazu či celé adresy, dekóduj sekvence %XX a zpracuj + jako mezeru. Běží v prohlížeči.
- Generátor hashů Vytvoř hash MD5, SHA-1, SHA-256 a SHA-512 z textu nebo souborů libovolné velikosti a ověř kontrolní součty. Vše běží ve tvém prohlížeči.