Diagram hekurudhor i regex
Shndërro një shprehje të rregullt JavaScript në një diagram hekurudhor të qartë me grupe, alternativa, cikle dhe lookaround, pastaj eksportoje si SVG ose PNG.
Flamuj: cilido nga d g i m s u v y. Mund të ngjitësh edhe një literal si /\d+/g.
- Grupe kapëse
- –
- Alternativa
- –
- Kuantifikues
- –
Diagram hekurudhor
Blu: tekst literal. Jeshil: lloje karakteresh dhe bashkësi (e kuqe: bashkësi e përjashtuar). Vjollcë: ankora dhe kufij. Portokalli: referenca prapa. Kutitë me vija të ndërprera: grupe dhe lookaround. Një rrugë mbi një element e anashkalon, një rrugë poshtë e përsërit.
Si ta vizualizosh një shprehje të rregullt
- Shkruaj ose ngjit modelin te Shprehja e rregullt. Mund të ngjitësh edhe një literal të plotë JavaScript si
/^\d{3}-\d{4}$/gm: vijat e pjerrëta hiqen dhe flamujt kalojnë automatikisht te kutia e flamujve. - Shto flamuj nëse të duhen (cilido nga
d g i m s u v y). Flamujt ndryshojnë mënyrën si vizatohen disa pjesë: mem,^dhe$bëhen “fillimi i rreshtit” dhe “fundi i rreshtit”; mes, pika bëhet “çdo karakter”. - Diagrami përditësohet ndërsa shkruan. Vizato diagramin e rivizaton sipas dëshirës, dhe Shembulli tjetër kalon nëpër disa modele të zakonshme (email, numër telefoni, ngjyrë hex, çmim, etiketë HTML, URL).
- Lexo diagramin nga e majta në të djathtë, nga pika e mbushur te pika me unazë. Çdo rrugë që mund të ndjekësh është një varg që modeli mund ta përputhë.
- Përdor Shkarko SVG për një imazh vektorial të mprehtë (dokumentim, prezantime), Shkarko PNG për një figurë me rezolucion të dyfishtë, ose Kopjo kodin SVG për të ngjitur markup-in në një faqe uebi.
Vendose miun mbi një kuti për të parë pjesën e modelit nga vjen dhe pozicionin e saj.
Si ta lexosh një diagram hekurudhor
Diagramet hekurudhore, të quajtura edhe diagrame sintakse, e përshkruajnë një gramatikë si një sistem shinash. Një shprehje e rregullt është pikërisht një gramatikë e tillë, ndaj vizatimi e tregon strukturën shumë më mirë se një rresht i dendur simbolesh:
- Kutitë blu janë tekst literal që duhet të shfaqet siç është shkruar, për shembull
“@”. - Kutitë jeshile janë lloje karakteresh (
\dshifër,\wkarakter fjale,.çdo karakter…) dhe klasa karakteresh. Një klasë si[\w.+-]bëhet një kuti me titullin “një nga” që liston secilin element; një klasë e mohuar[^…]është e kuqe me titullin “asnjë nga”. - Kapsulat vjollcë janë ankora dhe kufij: fillimi dhe fundi i tekstit ose rreshtit, kufiri i fjalës
\b. Ato përputhin një pozicion, jo një karakter. - Kutitë portokalli me vija të ndërprera janë referenca prapa si
\1ose\k<name>: i njëjti tekst si një grup i përputhur më parë. - Kornizat me vija të ndërprera janë grupe. Grupet kapëse numërohen sipas rendit të kllapës hapëse (“grupi #2 “domain””); grupet jokapëse
(?:…)nuk kanë kornizë. Lookahead dhe lookbehind marrin një kornizë rozë me etiketën “ndiqet nga” ose “paraprihet nga”, sepse e kontrollojnë tekstin pa e konsumuar. - Rrugët paralele janë alternativa të ndara me
|. - Një rrugë sipër një elementi të lejon ta anashkalosh (
?,*,{0,n}). Një rrugë poshtë me shigjetë kthehet prapa për ta përsëritur (+,*,{n,m}). Numrat e ndryshëm nga të zakonshmit shkruhen nën ciklin, si “2 deri 5 herë”, dhe kuantifikuesit dembelë (+?,*?) shënohen “dembel”.
Mesazhet e gabimit me pozicione
Modeli kontrollohet nga vetë motori i shfletuesit tënd për shprehje të rregullta JavaScript, ndaj ajo që pranon ky mjet është saktësisht ajo që pranon new RegExp() me të njëjtët flamuj. Kur motori e refuzon, mjeti tregon karakterin problematik me pozicionin e tij dhe një shenjë nën model. Njeh një ) pa çift, një grup që nuk mbyllet kurrë, një klasë karakteresh pa ], një kuantifikues pa çfarë të përsëritë (*a, a|+), një vijë të pjerrët të prapme të vetme në fund dhe kuantifikues {n,m} ku n është më i madh se m. Gabimet e tjera, si një referencë prapa te një emër grupi që nuk ekziston, shfaqen me mesazhin e shfletuesit.
Shprehja vetëm kompilohet për ta validuar: nuk ekzekutohet kurrë mbi ndonjë tekst, dhe asgjë nuk largohet nga shfletuesi yt.
Pyetje të shpeshta
Cilin lloj regex e mbështet ky mjet?
Shprehje të rregullta JavaScript (ECMAScript), përfshirë grupe me emër, lookbehind, escape-e të vetive Unicode \p{…} dhe flamurin v me klasa të ndërthurura. Modelet nga PCRE, Python ose Java zakonisht funksionojnë gjithashtu, por sintaksa specifike e atyre motorëve, si kuantifikuesit posesivë ose (?P<name>…), refuzohet sepse shfletuesi nuk e mbështet.
Pse grupi im jokapës nuk vizatohet si kuti?
Një grup si (?:\.[\w-]+) vetëm grupon elemente që një kuantifikues ose alternativë të vlejë për të gjithë. Nuk krijon kapje, ndaj diagrami shfaq përmbajtjen dhe ciklin e tij pa kornizë, që vizatimi të mbetet i lexueshëm. Grupet me flamuj brenda shprehjes kanë kornizë dhe etiketohen me ata flamuj.
Cili është ndryshimi mes rrugës së anashkalimit dhe ciklit?
Rruga sipër një elementi do të thotë “zero herë lejohet”, dhe rruga poshtë do të thotë “mund të përsëritet”. ? ka vetëm rrugën e sipërme, + vetëm të poshtmen, dhe * i ka të dyja. Për një kuantifikues si {2,4}, cikli mban etiketën “2 deri 4 herë”.
A mund ta përdor diagramin në dokumentimin tim?
Po. Eksporti SVG është një skedar vektorial i pavarur me sfond të bardhë dhe vija të errëta, ideal për skedarë README, wiki dhe prezantime. Eksporti PNG vizatohet në dyfishin e madhësisë së vizatimit në ekran, për shfaqje të mprehtë në ekrane me densitet të lartë.
A ka kufi madhësie?
Modelet mund të jenë deri në 5 000 karaktere. Shprehjet shumë të gjata prodhojnë një diagram të gjerë që mund ta rrëshqasësh horizontalisht; ndarja e tyre në pjesë me emër shpesh e bën më të lehtë mirëmbajtjen e diagramit dhe të regex-it.
Mjete të ngjashme
- Testues regex Testo shprehje të rregullta JavaScript drejtpërdrejt me përputhje të theksuara, grupe kapëse, zëvendësim dhe një shpjegim të thjeshtë të çdo token-i të modelit.
- Eksplorues AST për JavaScript Ngjit kodin JavaScript dhe eksploro pemën e sintaksës abstrakte (ESTree, e analizuar nga Acorn) në shfletuesin tënd. Eksportoje AST-në si JSON.
- Formatuesi dhe vlerësuesi i JSON Formatues dhe vlerësues JSON falas që bukuron, minifikon dhe kontrollon JSON në shfletuesin tënd, me gabimet e sintaksës sipas rreshtit dhe kolonës.