Vizualizacija regularnih izraza
Pretvori JavaScript regularni izraz u pregledan dijagram sa skupinama, alternativama, petljama i pogledima unaprijed/unatrag, pa ga izvezi kao SVG ili PNG.
Zastavice: bilo koja od d g i m s u v y. Možeš zalijepiti i literal poput /\d+/g.
- Skupine koje hvataju
- –
- Alternative
- –
- Kvantifikatori
- –
Dijagram
Plavo: doslovni tekst. Zeleno: vrste znakova i skupovi (crveno: isključeni skup). Ljubičasto: sidra i granice. Narančasto: povratne reference. Isprekidani okviri: skupine i pogledi unaprijed/unatrag. Staza iznad elementa preskače ga, staza ispod ponavlja ga.
Kako vizualizirati regularni izraz
- Upiši ili zalijepi uzorak u Regularni izraz. Možeš zalijepiti i cijeli JavaScript literal poput
/^\d{3}-\d{4}$/gm: kose crte se uklanjaju, a zastavice automatski prelaze u polje za zastavice. - Dodaj Zastavice ako ti trebaju (bilo koje od
d g i m s u v y). Zastavice mijenjaju način crtanja nekih dijelova: sm^i$postaju „početak retka“ i „kraj retka“; sastočka postaje „bilo koji znak“. - Dijagram se ažurira dok tipkaš. Nacrtaj dijagram crta ga ponovno na zahtjev, a Sljedeći primjer prolazi kroz nekoliko uobičajenih uzoraka (e-pošta, telefonski broj, heksadecimalna boja, cijena, HTML oznaka, URL).
- Čitaj dijagram slijeva nadesno, od ispunjene točke do točke s prstenom. Svaka staza koju možeš slijediti jest niz koji uzorak može prepoznati.
- Koristi Preuzmi SVG za oštru vektorsku sliku (dokumentacija, prezentacije), Preuzmi PNG za sliku u dvostrukoj razlučivosti ili Kopiraj SVG kod da zalijepiš oznake u web-stranicu.
Zadrži pokazivač miša iznad okvira da vidiš dio uzorka iz kojeg dolazi i njegov položaj.
Kako čitati dijagram
Takvi dijagrami, zvani i sintaksni dijagrami, opisuju gramatiku kao skup staza. Regularni izraz upravo je takva gramatika, pa crtež pokazuje njegovu strukturu puno bolje od guste crte simbola:
- Plavi okviri su doslovni tekst koji se mora pojaviti kako je napisan, na primjer
„@“. - Zeleni okviri su vrste znakova (
\dznamenka,\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 i ima naslov „nijedno od“. - Ljubičaste pilule su sidra i granice: početak i kraj teksta ili retka, granica riječi
\b. One odgovaraju položaju, a ne znaku. - Narančasti isprekidani okviri su povratne reference poput
\1ili\k<name>: isti tekst koji je prije prepoznala neka skupina. - Isprekidani okviri su skupine. Skupine koje hvataju numeriraju se redoslijedom otvorene zagrade („skupina #2 ‚domain‘“); skupine koje ne hvataju
(?:…)nemaju okvir. Pogledi unaprijed i unatrag dobivaju ružičasti okvir s oznakom „slijedi“ ili „prethodi“, jer provjeravaju tekst bez da ga troše. - Paralelne staze su alternative odvojene znakom
|. - Staza iznad elementa omogućuje da ga preskočiš (
?,*,{0,n}). Staza ispod sa strelicom vraća se natrag da ga ponovi (+,*,{n,m}). Neuobičajeni brojevi ponavljanja ispisuju se ispod petlje, na primjer „2 do 5 puta“, a lijeni kvantifikatori (+?,*?) označeni su s „lijeno“.
Poruke o pogreškama s položajem
Uzorak provjerava mehanizam regularnih izraza tvog preglednika, pa alat prihvaća točno ono što new RegExp() prihvaća s istim zastavicama. Kad ga mehanizam odbije, alat pokazuje problematičan znak s položajem i oznakom ispod uzorka. Prepoznaje nesparenu ), skupinu koja nikada nije zatvorena, klasu znakova bez ], kvantifikator bez ičega za ponavljanje (*a, a|+), samostalnu obrnutu kosu crtu na kraju i kvantifikatore {n,m} kod kojih je n veći od m. Ostale pogreške, na primjer povratna referenca na nepostojeće ime skupine, prikazuju se porukom preglednika.
Izraz se samo kompilira radi provjere: nikada se ne izvodi nad nekim tekstom i ništa ne napušta tvoj preglednik.
Česta pitanja
Koju inačicu regexa ovaj alat podržava?
JavaScript (ECMAScript) regularne izraze, uključujući imenovane skupine, poglede unatrag, Unicode svojstva \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 mehanizme, poput posesivnih kvantifikatora ili (?P<name>…), odbija se jer je preglednik ne podržava.
Zašto se moja skupina koja ne hvata ne crta kao okvir?
Skupina poput (?:\.[\w-]+) samo grupira elemente da se kvantifikator ili alternativa odnose na sve njih. Ne stvara hvatanje, pa dijagram prikazuje njezin sadržaj i petlju bez okvira, što crtež održava čitljivim. Skupine 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 dopušteno“, a staza ispod znači „smije se ponavljati“. ? 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?
Da. SVG izvoz je samostalna vektorska datoteka s bijelom pozadinom i tamnim crtama, idealna za README datoteke, wikije i prezentacije. PNG izvoz renderira se u dvostrukoj veličini crteža na zaslonu radi oštrog prikaza na zaslonima visoke gustoće.
Postoji li ograničenje veličine?
Uzorci mogu imati do 5000 znakova. Vrlo dugi izrazi daju širok dijagram koji možeš pomicati vodoravno; dijeljenje na imenovane dijelove često olakšava održavanje i dijagrama i regexa.
Slični alati
- 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.
- JavaScript AST Explorer Zalijepi JavaScript i istraži njegovo apstraktno sintaktičko stablo (ESTree, Acorn) u pregledniku. Klikni čvorove za kôd i izvezi AST kao JSON.
- 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.