Regex geležinkelio diagrama
Paversk JavaScript reguliariąją išraišką aiškia geležinkelio diagrama su grupėmis, alternatyvomis, ciklais ir žvilgsniais, tada eksportuok ją kaip SVG ar PNG.
Vėliavėlės: bet kuri iš d g i m s u v y. Taip pat gali įklijuoti literalą, pvz., /\d+/g.
- Fiksuojančios grupės
- –
- Alternatyvos
- –
- Kvantifikatoriai
- –
Geležinkelio diagrama
Mėlyna: pažodinis tekstas. Žalia: simbolių tipai ir rinkiniai (raudona: neįtrauktas rinkinys). Violetinė: inkarai ir ribos. Oranžinė: atgalinės nuorodos. Punktyrinės dėžės: grupės ir žvilgsniai. Kelias virš elemento jį praleidžia, kelias po juo kartoja.
Kaip vizualizuoti reguliariąją išraišką
- Įrašyk arba įklijuok šabloną į lauką Reguliarioji išraiška. Taip pat gali įklijuoti visą JavaScript literalą, pavyzdžiui,
/^\d{3}-\d{4}$/gm: pasvirieji brūkšniai pašalinami, o vėliavėlės automatiškai perkeliamos į vėliavėlių langelį. - Jei reikia, pridėk vėliavėles (bet kurias iš
d g i m s u v y). Vėliavėlės keičia, kaip braižomos kai kurios dalys: sumsimboliai^ir$tampa „eilutės pradžia“ ir „eilutės pabaiga“, o sustaškas tampa „bet kuris simbolis“. - Diagrama atsinaujina, kai renki. Braižyti diagramą perpiešia ją pagal poreikį, o Kitas pavyzdys pereina per keletą dažnų šablonų (el. paštas, telefono numeris, šešioliktainė spalva, kaina, HTML žyma, URL).
- Diagramą skaityk iš kairės į dešinę, nuo užpildyto taško iki taško su žiedu. Kiekvienas kelias, kuriuo gali eiti, yra eilutė, kurią šablonas gali atitikti.
- Naudok Atsisiųsti SVG aiškiam vektoriniam vaizdui (dokumentacijai, skaidrėms), Atsisiųsti PNG dvigubos skiriamosios gebos paveikslėliui arba Kopijuoti SVG kodą, kad įklijuotum žymėjimą į tinklalapį.
Užvesk pelę ant dėžutės, kad pamatytum šablono dalį, iš kurios ji kilusi, ir jos poziciją.
Kaip skaityti geležinkelio diagramą
Geležinkelio diagramos, dar vadinamos sintaksės diagramomis, aprašo gramatiką kaip bėgių rinkinį. Reguliarioji išraiška yra būtent tokia gramatika, todėl piešinys parodo jos struktūrą daug geriau nei tanki simbolių eilutė:
- Mėlynos dėžutės yra pažodinis tekstas, kuris turi atsirasti taip, kaip parašyta, pavyzdžiui,
„@“. - Žalios dėžutės yra simbolių tipai (
\dskaitmuo,\wžodžio simbolis,.bet kuris simbolis…) ir simbolių klasės. Klasė, pavyzdžiui,[\w.+-], tampa dėžute su antraštė „vienas iš“, išvardijančia kiekvieną elementą; neigiama klasė[^…]yra raudona su antraštė „nė vienas iš“. - Violetinės piliulės yra inkarai ir ribos: teksto ar eilutės pradžia bei pabaiga,
\bžodžio riba. Jos atitinka poziciją, o ne simbolį. - Oranžinės punktyrinės dėžutės yra atgalinės nuorodos, pavyzdžiui,
\1ar\k<name>: tas pats tekstas, kurį anksčiau atitiko grupė. - Punktyriniai rėmeliai yra grupės. Fiksuojančios grupės numeruojamos pagal atidarančiojo skliausto tvarką („grupė Nr. 2 ‚domain‘“); nefiksuojančios grupės
(?:…)rėmelio neturi. Žvilgsniai į priekį ir atgal gauna rožinį rėmelį su užrašu „toliau eina“ arba „prieš tai eina“, nes jie tikrina tekstą jo nesunaudodami. - Lygiagrečios linijos yra alternatyvos, atskirtos
|. - Kelias virš elemento leidžia jį praleisti (
?,*,{0,n}). Kelias žemiau su rodykle grįžta atgal elementui pakartoti (+,*,{n,m}). Neįprasti skaičiai užrašomi po ciklu, pavyzdžiui, „nuo 2 iki 5 kartų“, o tingūs kvantifikatoriai (+?,*?) pažymimi „tingus“.
Klaidų pranešimai su pozicijomis
Šabloną tikrina paties tavo naršyklės JavaScript reguliariųjų išraiškų variklis, todėl tai, ką šis įrankis priima, yra būtent tai, ką su tomis pačiomis vėliavėlėmis priima new RegExp(). Kai variklis šabloną atmeta, įrankis nurodo klaidingą simbolį su jo pozicija ir žymekliu po šablonu. Atpažįstamas nesuporuotas ), niekada neuždaryta grupė, simbolių klasė be ], kvantifikatorius, neturintis ką kartoti (*a, a|+), pavienis atvirkštinis pasvirasis brūkšnys pabaigoje ir {n,m} kvantifikatoriai, kuriuose n didesnis už m. Kitos klaidos, pavyzdžiui, atgalinė nuoroda į neegzistuojantį grupės pavadinimą, rodomos su naršyklės pranešimu.
Išraiška tik sukompiliuojama patikrinimui: ji niekada nevykdoma jokiam tekstui, ir niekas nepalieka tavo naršyklės.
Dažnai užduodami klausimai
Kokį regex variantą palaiko šis įrankis?
JavaScript (ECMAScript) reguliariąsias išraiškas, įskaitant įvardytas grupes, žvilgsnį atgal, Unicode savybių seką \p{…} ir v vėliavėlę su įdėtomis klasėmis. PCRE, Python ar Java šablonai dažniausiai taip pat veikia, bet tik tiems varikliams būdinga sintaksė, pavyzdžiui, savininkiški kvantifikatoriai ar (?P<name>…), atmetama, nes naršyklė jos nepalaiko.
Kodėl mano nefiksuojanti grupė nepiešiama kaip dėžutė?
Grupė, pavyzdžiui, (?:\.[\w-]+), tik sugrupuoja elementus, kad kvantifikatorius ar alternatyva būtų taikomi jiems visiems. Ji nesukuria fiksavimo, todėl diagrama rodo jos turinį ir ciklą be rėmelio, o tai palaiko piešinį skaitomą. Grupės su įterptomis vėliavėlėmis apvedamos rėmeliu ir pažymimos tomis vėliavėlėmis.
Kuo skiriasi praleidimo kelias ir ciklas?
Kelias virš elemento reiškia „leidžiama nulis kartų“, o kelias žemiau – „gali būti kartojama“. ? turi tik viršutinį kelią, + – tik apatinį, o * – abu. Kvantifikatoriui, pavyzdžiui, {2,4}, ciklas pažymimas „nuo 2 iki 4 kartų“.
Ar galiu naudoti diagramą savo dokumentacijoje?
Taip. SVG eksportas yra atskiras vektorinis failas su baltu fonu ir tamsiomis linijomis, idealus README failams, wiki ir skaidrėms. PNG eksportas piešiamas dvigubai didesnis nei vaizdas ekrane, kad ryškiai atrodytų didelio tankio ekranuose.
Ar yra dydžio apribojimas?
Šablonai gali būti iki 5000 simbolių ilgio. Labai ilgos išraiškos sukuria platesnę diagramą, kurią gali slinkti horizontaliai; suskaidžius jas į įvardytas dalis, lengviau prižiūrėti ir diagramą, ir patį regex.
Susiję įrankiai
- Regex testuoklis Testuok JavaScript reguliariąsias išraiškas gyvai: paryškinti atitikmenys, fiksuojančios grupės, pakeitimas ir paprastas kiekvieno elemento paaiškinimas.
- JavaScript AST naršyklė Įklijuok JavaScript kodą ir naršyklėje peržiūrėk jo abstraktų sintaksės medį (ESTree, Acorn). Spustelėk mazgus ir eksportuok AST kaip JSON.
- JSON formatuotojas ir tikrintuvas Nemokamas JSON formatuotojas ir tikrintuvas, kuris naršyklėje sutvarko, minimizuoja ir tikrina JSON, o sintaksės klaidas nurodo su eilute ir stulpeliu.