Tester regularnih izraza
Testiraj JavaScript regularne izraze uživo s istaknutim podudaranjima, skupinama koje hvataju, zamjenom i objašnjenjem svakog dijela uzorka na običnom jeziku.
| # | Položaj | Podudaranje | Skupine |
|---|
Objašnjenje uzorka
Upozorenje: ponavljana skupina sadrži još jedan neograničeni kvantifikator, na primjer (a+)+. Takvi uzorci mogu trajati eksponencijalno dugo na tekstu koji se gotovo podudara (katastrofalno vraćanje, backtracking).
Kako koristiti regex tester
- Upiši uzorak u Regularni izraz, bez okolnih kosih crta. Kose crte i aktivne zastavice prikazuju se oko polja, kao u
/uzorak/g. - Označi Zastavice koje trebaš:
g(global),i(ignoriraj velika/mala slova),m(multiline),s(dotAll),u(unicode) iliy(sticky). - Zalijepi tekst koji pretražuješ u Testni tekst. Podudaranja se ističu dok tipkaš, a tablica navodi svako podudaranje s njegovim položajem i skupinama koje hvataju.
- Za isprobavanje zamjene ispuni Zamjena. Okvir Rezultat nakon zamjene prikazuje tekst sa zamijenjenim svakim podudaranjem, spreman za kopiranje.
- Pročitaj Objašnjenje uzorka da provjeriš što svaki dio tvog regexa radi. Ne znaš odakle početi? Klikni Učitaj primjer.
Što tester prikazuje
- Istaknuta podudaranja: svako podudaranje u testnom tekstu je označeno, pa jednim pogledom vidiš što je uhvaćeno, a što propušteno.
- Tablica podudaranja: broj svakog podudaranja, njegov položaj (pomak znakova od početka, brojeći od 0), podudarani tekst i vrijednost svake skupine koja hvata. Imenovane skupine poput
(?<year>\d{4})prikazuju se pod svojim imenom, a skupine koje nisu sudjelovale u podudaranju prikazuju se kao „(nije podudareno)“. Navodi se prvih 1000 podudaranja. - Zamjena: tekst zamjene koristi JavaScript sintaksu:
$1ili$2za numerirane skupine,$<name>za imenovane skupine,$&za cijelo podudaranje i$$za doslovan znak dolara. Bez zastavicegzamjenjuje se samo prvo podudaranje. - Objašnjenje: uzorak se dijeli na tokene (doslovni tekst, klase znakova, sidra, skupine, kvantifikatori, pogledi unaprijed/unatrag, povratne reference), svaki s kratkim opisom. Ugniježđene skupine su uvučene, što dugačke uzorke čini puno lakšima za pregled.
Zastavice ukratko
| Zastavica | Učinak |
|---|---|
g |
Pronalazi sva podudaranja umjesto da stane na prvom |
i |
Ignorira razliku između velikih i malih slova |
m |
^ i $ podudaraju se na početku i kraju svakog retka |
s |
. obuhvaća i prijelome redaka |
u |
Potpuni Unicode način: \u{…}, \p{…} i emojiji tretirani kao pojedinačni znakovi |
y |
Sticky: svako podudaranje mora početi točno gdje je prethodno završilo |
Katastrofalno vraćanje (backtracking)
Neki uzorci troše eksponencijalno vrijeme na tekstu koji se gotovo podudara. Klasičan primjer je (a+)+$ testiran na dugom nizu slova a iza kojeg slijedi b: mehanizam isprobava svaki način raspodjele slova a između dvaju kvantifikatora prije nego odustane. Taj problem, poznat kao ReDoS, srušio je prave web-stranice.
Alat štiti tvoj preglednik na tri načina. Podudaranje se izvodi u pozadinskom radniku koji se zaustavlja nakon 1,5 sekunde; testni tekst ograničen je na 100 000 znakova; a objašnjenje te upozorava kad ponavljana skupina sadrži još jedan neograničeni kvantifikator. Kad uzorku istekne vrijeme, prepiši ga tako da se svaki znak može podudariti samo na jedan način, na primjer a+$ umjesto (a+)+$.
Česta pitanja
Koju inačicu regexa koristi ovaj alat?
Koristi JavaScript (ECMAScript) mehanizam tvog preglednika, točno kao što bi new RegExp() i String.prototype.replace() radili u tvom kodu. Većina sintakse zajednička je s PCRE-om, Pythonom i Javom, ali neke se mogućnosti razlikuju: posesivni kvantifikatori i atomske skupine ne postoje u JavaScriptu, a pogled unatrag podržavaju svi aktualni preglednici.
Zašto moj uzorak pronalazi samo jedno podudaranje?
Zastavica g je isključena. Bez nje JavaScript staje nakon prvog podudaranja, a zamjena mijenja samo to jedno.
Kako podudariti doslovnu točku, zagradu ili upitnik?
Izbjegni ga obrnutom kosom crtom: \., \[, \?. Objašnjenje prikazuje izbjegnute znakove kao „(izbjegnut)“ pa možeš provjeriti.
Šalje li se moj tekst negdje?
Ne. Uzorak i tekst obrađuju se samo u tvom pregledniku, zbog čega je alat siguran za datoteke dnevnika ili podatke koji sadrže osobne informacije.
Zašto se položaj razlikuje od stupca u mom uređivaču?
Položaji broje znakove od 0, kroz sve retke, kao što radi JavaScriptov match.index. Prijelom retka broji se kao jedan znak, a emoji izvan osnovne višejezične ravnine broji se kao dva.
Slični alati
- JSON formater i validator Besplatni JSON formater i validator koji uljepšava, minificira i provjerava JSON u pregledniku, a sintaksne greške prijavljuje s retkom i stupcem.
- URL kodiranje i dekodiranje Besplatno URL kodiranje i dekodiranje. Postotno kodiraj parametre upita ili cijele URL-ove, dekodiraj nizove %XX i tretiraj + kao razmak. Radi u pregledniku.
- Generator hasheva Generiraj MD5, SHA-1, SHA-256 i SHA-512 hasheve teksta ili datoteka bilo koje veličine i provjeri kontrolne zbrojeve. Sve radi u tvom pregledniku.