Regex vizualizator
Pretvori JavaScript regularni izraz u pregledan railroad dijagram s grupama, alternativama, petljama i lookaroundima, pa ga izvezi kao SVG ili PNG.
Zastavice: bilo koje od d g i m s u v y. Možeš zalijepiti i literal poput /\d+/g.
- Grupe za hvatanje
- –
- Alternative
- –
- Kvantifikatori
- –
Railroad dijagram
Plavo: doslovni tekst. Zeleno: tipovi znakova i skupovi (crveno: isključeni skup). Ljubičasto: sidra i granice. Narandžasto: povratne reference. Isprekidani okviri: grupe i lookaround. Staza iznad elementa preskače ga, staza ispod ponavlja ga.
Kako vizualizovati regularni izraz
- Upiši ili zalijepi uzorak u polje Regularni izraz. Možeš zalijepiti i cijeli JavaScript literal poput
/^\d{3}-\d{4}$/gm: kose crte se uklanjaju, a zastavice se automatski prebacuju u polje za zastavice. - Dodaj Zastavice ako su ti potrebne (bilo koje od
d g i m s u v y). Zastavice mijenjaju način crtanja nekih dijelova: sm^i$postaju „početak reda“ i „kraj reda“, a sastačka postaje „bilo koji znak“. - Dijagram se osvježava dok pišeš. Nacrtaj dijagram ga po potrebi iscrtava ponovo, a Sljedeći primjer prolazi kroz nekoliko uobičajenih uzoraka (e-pošta, broj telefona, heks boja, cijena, HTML oznaka, URL).
- Čitaj dijagram slijeva nadesno, od popunjene tačke do tačke s prstenom. Svaka staza kojom možeš proći je niz koji uzorak može prepoznati.
- Koristi Preuzmi SVG za oštru vektorsku sliku (dokumentacija, prezentacije), Preuzmi PNG za sliku u dvostrukoj rezoluciji ili Kopiraj SVG kod da zalijepiš markup u web stranicu.
Zadrži miš iznad okvira da vidiš dio uzorka iz kojeg potiče i njegovu poziciju.
Kako čitati railroad dijagram
Railroad dijagrami, poznati i kao sintaksni dijagrami, opisuju gramatiku kao skup staza. Regularni izraz je upravo takva gramatika, pa crtež prikazuje njegovu strukturu mnogo bolje od guste linije simbola:
- Plavi okviri su doslovni tekst koji se mora pojaviti kako je napisan, na primjer
„@“. - Zeleni okviri su tipovi znakova (
\dcifra,\wznak riječi,.bilo koji znak…) i klase znakova. Klasa poput[\w.+-]postaje okvir s naslovom „jedno od“ koji navodi svaku stavku; negirana klasa[^…]je crvena s naslovom „nijedno od“. - Ljubičaste pilule su sidra i granice: početak i kraj teksta ili reda, granica riječi
\b. One prepoznaju poziciju, a ne znak. - Narandžasti isprekidani okviri su povratne reference poput
\1ili\k<name>: isti tekst kao grupa koja je ranije prepoznata. - Isprekidani okviri su grupe. Grupe za hvatanje numerišu se redoslijedom otvorene zagrade („grupa #2 „domain““); grupe bez hvatanja
(?:…)nemaju okvir. Lookahead i lookbehind dobijaju ružičast okvir s oznakom „iza njega slijedi“ ili „ispred njega je“, jer provjeravaju tekst bez njegovog trošenja. - Paralelne staze su alternative razdvojene znakom
|. - Staza iznad elementa omogućava da se on preskoči (
?,*,{0,n}). Staza ispod sa strelicom vraća se nazad da ga ponovi (+,*,{n,m}). Neuobičajeni brojevi ispisani su ispod petlje, na primjer „2 do 5 puta“, a lijeni kvantifikatori (+?,*?) označeni su kao „lijeno“.
Poruke o greškama s pozicijama
Uzorak provjerava vlastiti JavaScript pogon za regularne izraze tvog preglednika, pa alat prihvata tačno ono što prihvata new RegExp() s istim zastavicama. Kada pogon odbije uzorak, alat pokazuje problematičan znak s njegovom pozicijom i oznakom ispod uzorka. Prepoznaje neuparenu ), grupu koja nikad nije zatvorena, klasu znakova kojoj nedostaje ], kvantifikator bez čega da se ponovi (*a, a|+), samotnu obrnutu kosu crtu na kraju i kvantifikatore {n,m} gdje je n veće od m. Ostale greške, poput povratne reference na ime grupe koje ne postoji, prikazuju se porukom preglednika.
Izraz se samo kompajlira radi provjere: nikada se ne izvršava nad tekstom i ništa ne napušta tvoj preglednik.
Česta pitanja
Koji regex dijalekt alat podržava?
JavaScript (ECMAScript) regularne izraze, uključujući imenovane grupe, lookbehind, Unicode escape sekvence svojstava \p{…} i zastavicu v s ugniježđenim klasama. Uzorci iz PCRE-a, Pythona ili Jave obično također rade, ali sintaksa specifična za te pogone, poput posesivnih kvantifikatora ili (?P<name>…), odbija se jer je preglednik ne podržava.
Zašto se moja grupa bez hvatanja ne crta kao okvir?
Grupa poput (?:\.[\w-]+) samo grupiše elemente da se kvantifikator ili alternacija odnosi na sve njih. Ne pravi hvatanje, pa dijagram prikazuje njen sadržaj i petlju bez okvira, što crtež održava čitljivim. Grupe s ugrađenim zastavicama imaju okvir i oznaku tih zastavica.
Koja je razlika između staze za preskakanje i petlje?
Staza iznad elementa znači „nula puta je dozvoljeno“, a staza ispod znači „može se ponoviti“. ? ima samo gornju stazu, + samo donju, a * obje. Za kvantifikator poput {2,4} petlja nosi oznaku „2 do 4 puta“.
Mogu li dijagram koristiti u svojoj dokumentaciji?
Možeš. SVG izvoz je samostalna vektorska datoteka s bijelom pozadinom i tamnim linijama, idealna za README datoteke, wikije i prezentacije. PNG izvoz se iscrtava u dvostruko većoj veličini od prikaza na ekranu, za oštar prikaz na ekranima visoke gustoće.
Postoji li ograničenje veličine?
Uzorci mogu imati do 5 000 znakova. Veoma dugi izrazi daju širok dijagram koji možeš pomicati vodoravno; njihovo dijeljenje na imenovane dijelove često olakšava održavanje i dijagrama i regexa.
Srodni alati
- 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.
- Istraživač JavaScript AST-a Zalijepi JavaScript i istraži njegovo apstraktno sintaksno stablo (ESTree, Acorn) u pregledniku. Klikni čvorove i izvezi AST kao JSON.
- 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.