Co je tento nástroj?
Regulární výraz (regex) je kompaktní jazyk vzorů pro hledání, ověřování a extrakci textu: e-mailový vzor může ověřit vstup formuláře, \d{4}-\d{2}-\d{2} najde data a zachycené skupiny vytáhnou části, které potřebujete. Téměř každý programovací jazyk a editor podporuje regex.
Tento tester používá JavaScript regex engine — stejný, který běží v Node.js a každém prohlížeči — takže vzory, které zde sestavíte, se chovají identicky ve vašem kódu JavaScript/TypeScript. Většina vzorů také funguje beze změny v Pythonu, Javě a Go.
Proč ho používat?
- Živá zpětná vazba: shody se zvýrazní žlutě, jak píšete vzor.
- Zachycené skupiny zobrazené u každé shody — vidíte přesně, co bude obsahovat $1 a $2.
- Plná podpora příznaků: g (všechny shody), i (ignorovat velikost písmen), m (víceřádkový), s (tečka odpovídá i novému řádku), u (unicode).
- Jasné chybové zprávy, když má vzor syntaktickou chybu.
- Zdarma a soukromě — vzor i text nikdy neopustí váš prohlížeč.
Jak se používá
- Napište svůj vzor mezi dva znaky / (lomítka nemusíte sami escapovat).
- Upravte příznaky v malém poli za druhým / — výchozí g najde všechny shody.
- Vložte svůj testovací text níže.
- Shody se okamžitě zvýrazní; zachycené skupiny jsou vypsány pod tím.
- Pokud je vzor neplatný, chybová zpráva vysvětlí, co je špatně.
Příklad
Vstup
Vzor: (\w+)@(\w+)\.com
Testovací řetězec: Kontakt alice@example.com nebo bob@test.comVýstup
✓ 2 shody
#1 skupiny: $1=alice $2=example
#2 skupiny: $1=bob $2=testZávorky vytvářejí zachycené skupiny, na které se můžete odkazovat jako $1 a $2 v náhradách.
Praktické tipy
- Ověřujete vstup e-mailu? ^[^\s@]+@[^\s@]+\.[^\s@]+$ je benevolentní vzor, který zachytí zjevné překlepy bez odmítnutí platných, ale neobvyklých adres — plná shoda s RFC 5322 vyžaduje knihovnu, ne jeden řádek.
- Extrakce parametrů dotazu z URL: [?&]([^=]+)=([^&]*) s příznakem g, poté čtěte $1/$2 u každé shody místo ručního dělení podle & a =.
- Chystáte se použít vzor v .replace()? Otestujte ho nejprve zde — co se zvýrazní, je přesně to, čeho se .replace() dotkne, včetně zachycených skupin.
- Parsujete víceřádkové logy (odpovídání časovému razítku na začátku každého řádku)? Přidejte příznak m, aby se ^ a $ kotvily podle řádku místo celého řetězce.
- Zkopírovali jste vzor z Pythonu nebo PHP a zde neodpovídá? Zkontrolujte pojmenované skupiny (?P<name>...) — JavaScript používá (?<name>...), bez P — nebo posesivní kvantifikátory (++, *+), které v JavaScript regexu neexistují.
JavaScript tester regexu, ne obecný
Tento nástroj běží na vestavěném enginu RegExp JavaScriptu — přesně stejné cestě kódu za str.match(pattern) nebo pattern.test(str) v konzoli prohlížeče nebo Node.js. To se liší od testování proti PCRE (co používá PHP a co je výchozí u mnoha "univerzálních" testerů regexu) nebo Pythonova modulu re: JavaScript nemá posesivní kvantifikátory ani atomické skupiny a pojmenované zachycené skupiny používají (?<name>...) místo PCRE/Pythonova (?P<name>...).
Pokud se chystáte nasadit vzor uvnitř JS nebo TypeScriptu — validace formuláře, matchování routy, parser logů — testování zde znamená nulový nesoulad dialektů: to, co se zvýrazní na této stránce, je přesně to, čemu odpovídá new RegExp(pattern, flags) za běhu.
Kam to zapadá v reálných postupech
Test regexu málokdy stojí osamoceně. Obvyklý postup: potvrďte vzor zde, spusťte skutečné .replace() ve svém kódu a poté porovnejte text před/po, abyste se ujistili, že náhrada udělala přesně to, co jste čekali, a nic víc.
Extrakce strukturovaných dat pomocí zachycených skupin často přímo navazuje na JSON — naformátujte extrahovaný výstup a zkontrolujte, že se rozparsoval tak, jak jste očekávali.
Časté dotazy
Který dialekt regexu tento tester používá?
JavaScript (ECMAScript), engine v každém prohlížeči a Node.js. Základní syntaxe je přenositelná, ale některé funkce se mezi jazyky liší — např. podpora lookbehind a syntaxe pojmenovaných skupin se liší v Pythonu a Javě.
Proč můj vzor najde jen první shodu?
Chybí příznak g (global). Bez g se regex zastaví po první shodě. Tento nástroj má g jako výchozí — zkontrolujte, že jste ho neodstranili.
Proč . neodpovídá zalomení řádku?
Ve výchozím nastavení . odpovídá jakémukoli znaku kromě nového řádku. Přidejte příznak s (dotall), aby . odpovídalo i novým řádkům, nebo použijte [\s\S] jako přenositelnou alternativu.
Co znamenají výsledky zachycených skupin?
Každý pár závorek ve vašem vzoru zachytí text, který odpovídal. $1 je první skupina, $2 druhá, a tak dále — na tyto se odkazujete v operacích nahrazení a extrakčním kódu.
Proč je můj regex pomalý nebo zamrzá?
Pravděpodobně jde o katastrofický backtracking, způsobený vnořenými kvantifikátory jako (a+)+ na neodpovídajícím vstupu. Přepište vzor, abyste se vyhnuli nejednoznačnému opakování. Tento nástroj se pro udržení odezvy omezuje na 1000 shod.