UltKit

Regex tester

Zadajte vzor, zaškrtnite potrebné príznaky a vložte text: každá zhoda sa zvýrazní už počas písania a zobrazí sa v zozname s pozíciou a zachytávacími skupinami. Vzor spracúva vlastný regexový engine JavaScriptu vo vašom prehliadači, takže výsledky zodpovedajú vášmu kódu a text zostáva vo vašom zariadení.

Príznaky

0 znakov · 0 slov · 0 riadkov

Zhody sa zvýraznia tu.

0 znakov · 0 slov · 0 riadkov

Všetko prebieha priamo v tejto karte prehliadača. Váš text sa nikdy nenahráva ani neukladá.

Tokeny regulárnych výrazov v JavaScripte

Stĺpec prvej zhody vznikol spustením každého vzoru na jeho texte v engine JavaScriptu, ktorý zostavil túto stránku.

TokenVýznamVzorTextPrvá zhoda
\dČíslica 0–9/\d+/Order 66 shipped66
\wPísmeno, číslica alebo podčiarkovník (ASCII)/\w+/snake_case-idsnake_case
\sBiely znak vrátane tabulátorov a zalomení riadkov/\s+/two spaces
.Ľubovoľný znak okrem zalomenia riadka (okrem s)/a.c/abc a-cabc
^ $Začiatok a koniec vstupu (alebo riadka, s m)/^\w+$/singlesingle
[abc]Jeden z uvedených znakov/[aeiou]/rhythm and bluesa
[^abc]Ľubovoľný znak, ktorý nie je uvedený/[^0-9]+/2026-10-18-
* + ?0 alebo viac, 1 alebo viac, 0 alebo 1/colou?r/color colourcolor
{n,m}Od n do m-krát/\d{2,4}/7 42 1999 12345642
(…)Zachytávajúca skupina/(\d+)px/width: 320px320px
(?<name>…)Pomenovaná zachytávajúca skupina/(?<h>\d\d):(?<m>\d\d)/at 09:4509:45
(?:…)Skupina bez zachytávania/(?:ab)+/ababab!ababab
a|bKtorákoľvek strana/cat|dog/hotdogdog
\bHranica slova/\bcat\b/concat catcat
(?=…)Nasleduje (lookahead)/\d+(?=%)/50 of 75%75
(?<!…)Nepredchádza (negatívny lookbehind)/(?<!\$)\b\d+/$30 or 4040
\p{L}Ľubovoľné písmeno Unicode (vyžaduje u)/\p{L}+/unaïve 東京naïve

Šesť príznakov a čo menia

g (global) nájde všetky zhody namiesto zastavenia pri prvej; bez neho obsahuje zoznam jeden záznam. i ignoruje veľkosť písmen. m (multiline) spôsobí, že ^ a $ sedia na začiatku a konci každého riadku, nielen celého textu, čo potrebujete pri vzore, napríklad pre medzery na konci riadkov. s (dotAll, pridané v ES2018) umožní, aby . zodpovedala aj zalomeniam riadkov. u (unicode) berie text ako kódové body, takže emoji sa počíta ako jeden znak, a zapína vlastnosti ako \p{L} pre ľubovoľné písmeno v akomkoľvek písme. y (sticky) hľadá zhodu presne na aktuálnej pozícii, tento režim používajú tokenizéry. JavaScript pozná aj d pre indexy zhôd a v pre množinové operácie v triedach; tento tester používa len šesť uvedených.

Pod testovacím textom ukazuje každá zhoda svoj index a skupiny. Číslované skupiny vznikajú z obyčajných zátvoriek, (?:…) zoskupuje bez zachytenia a (?<year>\d{4}) vytvorí pomenovanú skupinu, ktorá sa zobrazí pod svojím názvom, ako ukazuje ukážka s dátumom ISO. Ponuka Bežné vzory vkladá otestované východiská pre e-mailové adresy, URL, adresy IPv4, hexadecimálne farby, UUID, opakované slová a medzery na konci riadkov. Vzor pre e-mail berte ako orientačnú kontrolu, nie validáciu: úplná gramatika adries je oveľa voľnejšia a jediný skutočný test je odoslanie správy.

Lookbehind a katastrofický backtracking

Lookaround testuje, čo je okolo pozície, bez toho, aby to spotreboval. Lookahead, (?=…) a (?!…), je súčasťou JavaScriptu odjakživa; lookbehind, (?<=…) a (?<!…), prišiel v ES2018 a vo všetkých hlavných prehliadačoch sa objavil, keď ho v roku 2023 pridal Safari 16.4. Takže (?<=\$)\d+ nájde 42 v „$42“ bez znaku dolára. Na rozdiel od mnohých iných nástrojov JavaScript dovoľuje lookbehind ľubovoľnej dĺžky.

Engine JavaScriptu používa backtracking: keď cesta zlyhá, vráti sa a skúša alternatívy. Vnorené kvantifikátory ako (a+)+$ mu dávajú exponenciálny počet spôsobov, ako rozdeliť ten istý text, takže reťazec 30 znakov a s x na konci môže trvať sekundy a pár ďalších písmen aj hodiny. Ide o katastrofický backtracking, ktorý sa na serveroch mení na ReDoS, odopretie služby; jediné pravidlo WAF s touto chybou vyradilo 2. júla 2019 sieť Cloudflare asi na pol hodiny. Keďže tento tester beží vo vašej karte, takýto vzor môže stránku zamrznúť; obnovte ju a prepíšte vzor tak, aby dva kvantifikátory nemohli zachytávať tie isté znaky, použite užšie triedy ako [^,]* namiesto .*, alebo kotvy. Na úpravu samotného textu, nie jeho hľadanie, pozrite textové nástroje; ďalšie nástroje pre vývojárov nájdete v centre nástroje pre vývojárov.

Často kladené otázky

Prečo môj regulárny výraz nájde len jednu zhodu?
Je vypnutý príznak g. Bez neho sa engine zastaví po prvej zhode. Zaškrtnite g, aby sa vypísali všetky výskyty; samotný príznak y nájde tiež viac zhôd, ale len keď po sebe bezprostredne nasledujú.
Zachytí \d v JavaScripte aj číslice z iných písiem?
Nie. V JavaScripte \d znamená len 0 až 9 a \w len ASCII písmená, číslice a podčiarkovník, aj s príznakom u. Pre iné písma použite \p{Nd} alebo \p{L} s u.
Bude sa tu otestovaný vzor správať rovnako v Pythone alebo PHP?
Základná syntax sa prenáša, ale detaily sa líšia: pomenované skupiny v Pythone sa píšu (?P<name>…), PHP a Python podporujú posesívne kvantifikátory, ktoré JavaScript nemá, a pravidlá lookbehindu sa líšia. Otestujte vzor znova v cieľovom engine.
Ako zachytiť doslovnú bodku alebo zátvorku?
Escapujte ho spätnou lomkou: \. zodpovedá bodke a \[ otváracej hranatej zátvorke. V triede znakov je väčšina symbolov už doslovná, takže [.] tiež zodpovedá len bodke.
Prečo stránka zamrzla, keď som písal vzor?
Vzor pravdepodobne spôsobil katastrofický backtracking na vašom texte. Obnovte stránku a vyhnite sa vnoreným kvantifikátorom ako (.*)* alebo (a+)+ a nech každá časť zodpovedá čo najmenšiemu počtu znakov.