Tester regulárnych výrazov
Testuj regulárne výrazy JavaScriptu naživo so zvýraznenými zhodami, zachytávacími skupinami, nahradením a vysvetlením každého prvku vzoru v bežnom jazyku.
| # | Pozícia | Zhoda | Skupiny |
|---|
Vysvetlenie vzoru
Upozornenie: opakovaná skupina obsahuje ďalší neohraničený kvantifikátor, napríklad (a+)+. Takéto vzory môžu na texte, ktorý takmer vyhovuje, trvať exponenciálne dlho (katastrofálne spätné prehľadávanie).
Ako používať tester regulárnych výrazov
- Napíš vzor do poľa Regulárny výraz bez okolitých lomiek. Lomky a aktívne príznaky sa zobrazujú okolo poľa, ako v
/vzor/g. - Zaškrtni potrebné Príznaky:
g(global),i(ignorovať veľkosť písmen),m(multiline),s(dotAll),u(unicode) aleboy(sticky). - Vlož text na prehľadávanie do poľa Testovací text. Zhody sa zvýrazňujú počas písania a tabuľka uvádza každú zhodu s jej pozíciou a zachytávacími skupinami.
- Ak chceš vyskúšať nahradenie, vyplň Náhrada. Pole Výsledok po nahradení ukáže text s každou nahradenou zhodou, pripravený na skopírovanie.
- V Vysvetlení vzoru skontroluj, čo robí každá časť tvojho regexu. Nevieš, kde začať? Klikni na Načítať príklad.
Funguje v tvojom prehliadači. Nič, čo zadáš, sa neodosiela na server.
Čo tester ukazuje
- Zvýraznené zhody: každá zhoda v testovacom texte je označená, takže na prvý pohľad vidíš, čo sa zachytilo a čo nie.
- Tabuľka zhôd: číslo každej zhody, jej pozícia (posun znakov od začiatku, počítaný od 0), zhodný text a hodnota každej zachytávacej skupiny. Pomenované skupiny ako
(?<year>\d{4})sa zobrazia pod svojím názvom a skupiny, ktoré sa na zhode nezúčastnili, sa zobrazia ako „(bez zhody)“. Uvedených je prvých 1 000 zhôd. - Náhrada: text náhrady používa syntax JavaScriptu:
$1alebo$2pre číslované skupiny,$<name>pre pomenované skupiny,$&pre celú zhodu a$$pre doslovný znak dolára. Bez príznakugsa nahradí len prvá zhoda. - Vysvetlenie: vzor sa rozdelí na prvky (doslovný text, triedy znakov, kotvy, skupiny, kvantifikátory, lookaround, spätné odkazy), každý s krátkym popisom. Vnorené skupiny sú odsadené, vďaka čomu sa dlhé vzory kontrolujú oveľa ľahšie.
Príznaky stručne
| Príznak | Účinok |
|---|---|
g |
Nájde všetky zhody namiesto zastavenia pri prvej |
i |
Ignoruje rozdiel medzi veľkými a malými písmenami |
m |
^ a $ zodpovedajú začiatku a koncu každého riadka |
s |
. zodpovedá aj zalomeniu riadka |
u |
Úplný režim Unicode: \u{…}, \p{…} a emoji sa spracúvajú ako jednotlivé znaky |
y |
Sticky: každá zhoda musí začínať presne tam, kde skončila predchádzajúca |
Katastrofálne spätné prehľadávanie
Niektoré vzory trvajú exponenciálne dlho na texte, ktorý takmer vyhovuje. Klasickým príkladom je (a+)+$ otestované na dlhom rade a nasledovanom b: engine vyskúša každý spôsob rozdelenia a medzi dva kvantifikátory, než to vzdá. Tento problém, známy ako ReDoS, už zhodil skutočné webové stránky.
Tento nástroj chráni tvoj prehliadač tromi spôsobmi. Hľadanie zhôd beží v pracovnom vlákne na pozadí, ktoré sa po 1,5 sekunde zastaví; testovací text je obmedzený na 100 000 znakov; a vysvetlenie ťa upozorní, keď opakovaná skupina obsahuje ďalší neohraničený kvantifikátor. Ak vzor prekročí časový limit, prepíš ho tak, aby sa každý znak dal zachytiť len jedným spôsobom, napríklad a+$ namiesto (a+)+$.
Často kladené otázky
Akú variantu regex tento nástroj používa?
Používa engine JavaScriptu (ECMAScript) tvojho prehliadača, presne ako new RegExp() a String.prototype.replace() vo tvojom kóde. Väčšina syntaxe je spoločná s PCRE, Pythonom a Javou, ale niektoré funkcie sa líšia: privlastňovacie kvantifikátory a atómové skupiny v JavaScripte neexistujú a lookbehind podporujú všetky súčasné prehliadače.
Prečo môj vzor nájde len jednu zhodu?
Príznak g je vypnutý. Bez neho sa JavaScript zastaví po prvej zhode a nahradenie zmení len ju.
Ako zachytím doslovnú bodku, zátvorku alebo otáznik?
Escapuj ich spätným lomítkom: \., \[, \?. Vysvetlenie zobrazuje escapované znaky ako „(escapovaný)“, takže si to môžeš overiť.
Odosiela sa môj text niekam?
Nie. Vzor aj text sa spracúvajú iba v tvojom prehliadači, vďaka čomu je tento nástroj bezpečný pre súbory protokolov alebo údaje obsahujúce osobné informácie.
Prečo sa pozícia líši od stĺpca v mojom editore?
Pozície počítajú znaky od 0 cez všetky riadky, tak ako match.index v JavaScripte. Zalomenie riadka sa počíta ako jeden znak a emoji mimo základnej viacjazyčnej roviny sa počíta ako dva.
Súvisiace nástroje
- Formátovanie a validácia JSON Bezplatný formátovač a validátor JSON, ktorý skrášľuje, minifikuje a kontroluje JSON v prehliadači a hlási syntaktické chyby s riadkom a stĺpcom.
- Kódovanie a dekódovanie URL Bezplatné kódovanie a dekódovanie URL. Percentovo kóduj parametre dopytu alebo celé adresy, dekóduj sekvencie %XX a spracuj + ako medzeru. Beží v prehliadači.
- Generátor hashov MD5, SHA-1, SHA-256 Vygeneruj hashe MD5, SHA-1, SHA-256 a SHA-512 textu alebo súborov ľubovoľnej veľkosti a over kontrolné súčty. Všetko beží v tvojom prehliadači.