Utilia

Regulaaravaldise raudteediagramm

Muuda JavaScripti regulaaravaldis selgeks raudteediagrammiks gruppide, alternatiivide, silmuste ja ümbrusekontrollidega ning ekspordi see SVG-na või PNG-na.

Lipud: mis tahes d g i m s u v y. Võid kleepida ka literaali, näiteks /\d+/g.

Püüdvad grupid
–
Alternatiivid
–
Kordajad
–

Raudteediagramm

Sinine: otsetekst. Roheline: märgitüübid ja hulgad (punane: välistatud hulk). Lilla: ankrud ja piirid. Oranž: tagasiviited. Katkendkastid: grupid ja ümbrusekontrollid. Tee elemendi kohal jätab selle vahele, tee all kordab seda.

Kuidas regulaaravaldist visualiseerida

  1. Kirjuta või kleebi oma muster lahtrisse Regulaaravaldis. Võid kleepida ka terve JavaScripti literaali, näiteks /^\d{3}-\d{4}$/gm: kaldkriipsud eemaldatakse ja lipud liiguvad automaatselt lippude lahtrisse.
  2. Lisa vajadusel Lipud (mis tahes d g i m s u v y). Lipud muudavad mõne osa joonistamist: lipuga m muutuvad ^ ja $ tähenduseks “rea algus” ja “rea lõpp”; lipuga s muutub punkt tähenduseks “mis tahes märk”.
  3. Diagramm uueneb sisestamise ajal. Joonista diagramm joonistab selle soovi korral uuesti ja Järgmine näide käib läbi mõned levinud mustrid (e-post, telefoninumber, heksvärv, hind, HTML-silt, URL).
  4. Loe diagrammi vasakult paremale, täidetud punktist rõngaga punktini. Iga tee, mida mööda saad minna, on string, millega muster sobib.
  5. Kasuta Laadi alla SVG teravale vektorpildile (dokumentatsioon, slaidid), Laadi alla PNG kahekordse eraldusvõimega pildile või Kopeeri SVG-kood, et kleepida märgistus veebilehele.

Liigu hiirega kasti kohale, et näha, millisest mustri osast see pärineb ja milline on selle positsioon.

Kuidas raudteediagrammi lugeda

Raudteediagrammid ehk süntaksidiagrammid kirjeldavad grammatikat rööbaste kogumina. Regulaaravaldis on täpselt selline grammatika, seega näitab joonis selle ülesehitust palju paremini kui tihe sümbolirida:

  • Sinised kastid on otsetekst, mis peab esinema just nii, nagu kirjas, näiteks „@“.
  • Rohelised kastid on märgitüübid (\d number, \w sõnamärk, . mis tahes märk…) ja märgiklassid. Klass nagu [\w.+-] muutub kastiks pealkirjaga “üks järgmistest”, mis loetleb iga elemendi; eitatud klass [^…] on punane ja pealkirjaga “mitte ükski järgmistest”.
  • Lillad tabletid on ankrud ja piirid: teksti või rea algus ja lõpp, \b sõnapiir. Need sobivad positsiooniga, mitte märgiga.
  • Oranžid katkendkastid on tagasiviited, näiteks \1 või \k<name>: sama tekst, mis varem sobinud grupil.
  • Katkendraamid on grupid. Püüdvad grupid nummerdatakse avava sulu järjekorras (“grupp #2 „domain“”); mittepüüdvaid gruppe (?:…) ei raamita. Ettevaatused ja tagasivaatused saavad roosa raami sildiga “millele järgneb” või “millele eelneb”, sest nad kontrollivad teksti seda tarbimata.
  • Paralleelsed rajad on alternatiivid, mis on eraldatud märgiga |.
  • Tee elemendi kohal lubab selle vahele jätta (?, *, {0,n}). Tee all noolega läheb tagasi, et seda korrata (+, *, {n,m}). Tavapärasest erinevad arvud kirjutatakse silmuse alla, näiteks “2 kuni 5 korda”, ja laisad kordajad (+?, *?) märgitakse sõnaga “laisk”.

Veateated positsioonidega

Mustrit kontrollib sinu brauseri enda JavaScripti regulaaravaldiste mootor, seega aktsepteerib see tööriist täpselt seda, mida new RegExp() samade lippudega. Kui mootor mustri tagasi lükkab, osutab tööriist probleemsele märgile koos positsiooni ja mustri all oleva noolega. Ta tunneb ära ühtimatu ), grupi, mis ei sulgu, märgiklassi, millel puudub ], kordaja, millel pole midagi korrata (*a, a|+), üksiku langkriipsu lõpus ja {n,m} kordajad, kus n on suurem kui m. Muud vead, näiteks tagasiviide olematu grupi nimele, kuvatakse brauseri sõnumiga.

Avaldis kompileeritakse ainult kontrollimiseks: seda ei käivitata kunagi ühegi teksti vastu ja midagi ei lahku sinu brauserist.

Korduma kippuvad küsimused

Millist regexi murret see tööriist toetab?

JavaScripti (ECMAScript) regulaaravaldisi, sealhulgas nimega gruppe, tagasivaatust, Unicode’i omaduste kaitsemärke \p{…} ja lippu v pesastatud klassidega. PCRE, Pythoni või Java mustrid töötavad tavaliselt samuti, kuid nende mootorite eriomane süntaks, näiteks possessiivsed kordajad või (?P<name>…), lükatakse tagasi, sest brauser seda ei toeta.

Miks mu mittepüüdvat gruppi kastina ei joonistata?

Selline grupp nagu (?:\.[\w-]+) ainult koondab elemendid, et kordaja või alternatiiv kehtiks kõigile. See ei tee püüdmist, seega näitab diagramm selle sisu ja silmust ilma raamita, mis hoiab joonise loetavana. Gruppe sisemiste lippudega raamitakse ja märgitakse nende lippudega.

Mis vahe on vahelejätmise rajal ja silmusel?

Tee elemendi kohal tähendab “null korda on lubatud” ja tee all tähendab “seda võib korrata”. Märgil ? on ainult ülemine tee, märgil + ainult alumine ja märgil * mõlemad. Kordaja nagu {2,4} puhul kannab silmus silti “2 kuni 4 korda”.

Kas võin diagrammi dokumentatsioonis kasutada?

Jah. SVG eksport on iseseisev vektorfail valge tausta ja tumedate joontega, ideaalne README-failide, vikide ja slaidide jaoks. PNG eksport renderdatakse ekraanijoonise kahekordses suuruses, et see näeks terav välja suure tihedusega ekraanidel.

Kas suurusel on piirang?

Mustrid võivad olla kuni 5000 märki pikad. Väga pikad avaldised annavad laia diagrammi, mida saab horisontaalselt kerida; nende jagamine nimega osadeks teeb sageli nii diagrammi kui ka regexi hooldamise lihtsamaks.