Regex tester
Testiraj JavaScript regularne izraze uživo s označenim podudaranjima, grupama za hvatanje, zamjenom i objašnjenjem svakog elementa uzorka na običnom jeziku.
| # | Pozicija | Podudaranje | Grupe |
|---|
Objašnjenje uzorka
Upozorenje: ponovljena grupa sadrži još jedan neograničen kvantifikator, na primjer (a+)+. Takvi uzorci mogu trajati eksponencijalno dugo na tekstu koji se skoro podudara (katastrofalni backtracking).
Kako koristiti regex tester
- Upiši uzorak u polje Regularni izraz, bez okolnih kosih crta. Kose crte i aktivne zastavice prikazane su oko polja, kao u
/uzorak/g. - Označi Zastavice koje trebaš:
g(global),i(ignoriši velika/mala slova),m(multiline),s(dotAll),u(unicode) iliy(sticky). - Zalijepi tekst koji se pretražuje u Testni tekst. Podudaranja se označavaju dok pišeš, a tabela navodi svako podudaranje s pozicijom i grupama za hvatanje.
- Za probu zamjene popuni Zamjena. Polje Rezultat nakon zamjene prikazuje tekst u kojem je zamijenjeno svako podudaranje, spreman za kopiranje.
- Pročitaj Objašnjenje uzorka da provjeriš šta radi svaki dio tvog regexa. Ne znaš odakle početi? Klikni na Učitaj primjer.
Šta tester prikazuje
- Označena podudaranja: svako podudaranje u testnom tekstu je označeno, pa jednim pogledom vidiš šta je uhvaćeno, a šta propušteno.
- Tabela podudaranja: redni broj svakog podudaranja, njegova pozicija (pomak u znakovima od početka, računajući od 0), prepoznati tekst i vrijednost svake grupe za hvatanje. Imenovane grupe poput
(?<year>\d{4})prikazuju se pod svojim imenom, a grupe koje nisu učestvovale u podudaranju prikazuju se kao „(nije prepoznato)“. Navodi se prvih 1 000 podudaranja. - Zamjena: tekst zamjene koristi JavaScript sintaksu:
$1ili$2za numerisane grupe,$<name>za imenovane grupe,$&za cijelo podudaranje i$$za doslovni znak dolara. Bez zastavicegzamjenjuje se samo prvo podudaranje. - Objašnjenje: uzorak se dijeli na tokene (doslovni tekst, klase znakova, sidra, grupe, kvantifikatori, lookaround, povratne reference), svaki s kratkim opisom. Ugniježđene grupe su uvučene, što dugačke uzorke čini mnogo lakšim za pregled.
Zastavice ukratko
| Zastavica | Efekt |
|---|---|
g |
Pronalazi sva podudaranja umjesto da stane na prvom |
i |
Ignoriše razliku između velikih i malih slova |
m |
^ i $ prepoznaju početak i kraj svakog reda |
s |
. prepoznaje i prelome redova |
u |
Puni Unicode način: \u{…}, \p{…} i emoji se obrađuju kao pojedinačni znakovi |
y |
Sticky: svako podudaranje mora početi tačno tamo gdje je prethodno završilo |
Katastrofalni backtracking
Neki uzorci traju eksponencijalno dugo na tekstu koji se skoro podudara. Klasičan primjer je (a+)+$ testiran na dugom nizu znakova a iza kojeg slijedi b: pogon isprobava svaki način raspodjele znakova a između dva kvantifikatora prije nego što odustane. Taj problem, poznat kao ReDoS, obarao je prave web stranice.
Alat štiti tvoj preglednik na tri načina. Traženje se izvršava u pozadinskom radniku (worker) koji se zaustavlja nakon 1,5 sekunde; testni tekst je ograničen na 100 000 znakova; a objašnjenje te upozorava kada ponovljena grupa sadrži još jedan neograničen kvantifikator. Kada uzorku istekne vrijeme, prepiši ga tako da se svaki znak može prepoznati na samo jedan način, na primjer a+$ umjesto (a+)+$.
Sve radi u tvom pregledniku. Ništa što upišeš ili zalijepiš ne šalje se na server.
Česta pitanja
Koji regex dijalekt ovaj alat koristi?
Koristi JavaScript (ECMAScript) pogon tvog preglednika, tačno kao new RegExp() i String.prototype.replace() u tvom kodu. Većina sintakse zajednička je s PCRE-om, Pythonom i Javom, ali neke mogućnosti se razlikuju: posesivni kvantifikatori i atomske grupe ne postoje u JavaScriptu, a lookbehind podržavaju svi aktuelni 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 da prepoznam doslovnu tačku, zagradu ili upitnik?
Izbjegni ih obrnutom kosom crtom: \., \[, \?. Objašnjenje prikazuje izbjegnute znakove kao „(izbjegnut)“ da možeš provjeriti.
Šalje li se moj tekst negdje?
Ne. Uzorak i tekst obrađuju se samo u tvom pregledniku, pa je ovaj alat siguran za log datoteke ili podatke koji sadrže lične informacije.
Zašto se pozicija razlikuje od kolone u mom uređivaču?
Pozicije broje znakove od 0, kroz sve redove, kao match.index u JavaScriptu. Prelom reda računa se kao jedan znak, a emoji izvan osnovne višejezične ravni (Basic Multilingual Plane) računa se kao dva.
Srodni alati
- JSON formater i validator Besplatan JSON formater i validator koji uljepšava, minifikuje i provjerava JSON u pregledniku, a sintaksne greške prijavljuje s redom i kolonom.
- URL kodiranje i dekodiranje Besplatno URL kodiranje i dekodiranje. Postotno kodiraj parametre upita ili cijele URL-ove, dekodiraj %XX sekvence i tretiraj + kao razmak. Radi u pregledniku.
- Generator hasheva Generiši MD5, SHA-1, SHA-256 i SHA-512 heševe teksta ili datoteka bilo koje veličine i provjeri kontrolne zbirove. Sve radi u tvom pregledniku.