Utilia

Regex-vizualizáló

Alakíts egy JavaScript reguláris kifejezést áttekinthető vasúti diagrammá csoportokkal, ciklusokkal és lookaroundokkal, majd exportáld SVG-ként vagy PNG-ként.

Flagek: bármelyik a d g i m s u v y közül. Beilleszthetsz literált is, például /\d+/g.

Rögzítő csoportok
–
Alternatívák
–
Kvantorok
–

Vasúti diagram

Kék: szó szerinti szöveg. Zöld: karaktertípusok és halmazok (piros: kizárt halmaz). Lila: horgonyok és határok. Narancssárga: visszahivatkozások. Szaggatott keretek: csoportok és lookaroundok. Egy elem fölötti ösvény átugorja, az alatta lévő megismétli.

Hogyan jeleníts meg egy reguláris kifejezést

  1. Írd be vagy illeszd be a mintát a Reguláris kifejezés mezőbe. Egy teljes JavaScript-literált is beilleszthetsz, például /^\d{3}-\d{4}$/gm: a perjeleket az eszköz eltávolítja, a flagek pedig automatikusan átkerülnek a flagek mezőbe.
  2. Szükség esetén adj meg flageket (bármelyiket a d g i m s u v y közül). A flagek befolyásolják, hogy egyes részek hogyan rajzolódnak ki: az m esetén a ^ és a $ „a sor eleje” és „a sor vége” lesz, az s esetén a pont „bármely karakter” lesz.
  3. A diagram gépelés közben frissül. A Diagram rajzolása kérésre újrarajzolja, a Következő példa pedig néhány gyakori mintán lépked végig (e-mail-cím, telefonszám, hexa színkód, ár, HTML-címke, URL).
  4. A diagramot balról jobbra olvasd, a teli ponttól a gyűrűs pontig. Minden követhető út egy olyan szöveg, amelyre a minta illeszkedhet.
  5. Az SVG letöltése éles vektorképet ad (dokumentációhoz, diákhoz), a PNG letöltése kétszeres felbontású képet, az SVG-kód másolása pedig a kódot, amelyet beilleszthetsz egy weboldalba.

Vidd az egeret egy doboz fölé, hogy lásd, a minta melyik részéből származik, és hol található.

Hogyan olvass vasúti diagramot

A vasúti diagramok, más néven szintaxisdiagramok, a nyelvtant sínek halmazaként írják le. A reguláris kifejezés pontosan ilyen nyelvtan, ezért a rajz sokkal jobban megmutatja a szerkezetét, mint egy sűrű szimbólumsor:

  • A kék dobozok szó szerinti szövegek, amelyeknek pontosan így kell szerepelniük, például „@”.
  • A zöld dobozok karaktertípusok (\d számjegy, \w szókarakter, . bármely karakter…) és karakterosztályok. Egy olyan osztályból, mint a [\w.+-], „valamelyik” fejlécű doboz lesz, amely felsorolja az elemeket; a tagadott [^…] osztály piros, és „egyik sem” fejlécet kap.
  • A lila tabletták horgonyok és határok: a szöveg vagy a sor eleje és vége, a \b szóhatár. Pozícióra illeszkednek, nem karakterre.
  • A narancssárga szaggatott dobozok visszahivatkozások, például \1 vagy \k<name>: ugyanaz a szöveg, amelyet egy korábbi csoport illesztett.
  • A szaggatott keretek csoportok. A rögzítő csoportokat a nyitó zárójelük sorrendjében számozza az eszköz (például „#2. csoport »domain«”); a nem rögzítő (?:…) csoportok nincsenek bekeretezve. A lookahead és a lookbehind rózsaszín keretet kap „ezt követi” vagy „ez előzi meg” felirattal, mert a szöveget a felhasználása nélkül ellenőrzik.
  • A párhuzamos sínek a | jellel elválasztott alternatívák.
  • Egy elem fölötti sín lehetővé teszi az átugrását (?, *, {0,n}). Az alatta lévő, nyíllal ellátott sín visszakanyarodik az ismétléshez (+, *, {n,m}). A szokásostól eltérő darabszámokat a ciklus alatt tünteti fel az eszköz, például „2–5-ször”, a lusta kvantorokat (+?, *?) pedig „lusta” felirattal jelöli.

Hibaüzenetek pozícióval

A mintát a böngésződ saját JavaScript reguláris kifejezés-motorja ellenőrzi, így az eszköz pontosan azt fogadja el, amit a new RegExp() ugyanazokkal a flagekkel. Ha a motor elutasítja a mintát, az eszköz a hibás karakterre mutat a pozíciójával és egy jelölővel a minta alatt. Felismeri a pár nélküli ) jelet, a le nem zárt csoportot, a ] nélküli karakterosztályt, az ismétlendő elem nélküli kvantort (*a, a|+), a záró magányos fordított perjelet és az olyan {n,m} kvantort, amelyben n nagyobb m-nél. A többi hibát, például egy nem létező csoportnévre mutató visszahivatkozást, a böngésző üzenetével mutatja.

A kifejezést csak az érvényesítéshez fordítja le az eszköz: soha nem futtatja semmilyen szövegen, és semmi nem hagyja el a böngésződet.

Gyakori kérdések

Melyik regex-változatot támogatja az eszköz?

A JavaScript (ECMAScript) reguláris kifejezéseit, beleértve a névvel ellátott csoportokat, a lookbehindot, a \p{…} Unicode-tulajdonság escape-eket és a v flaget beágyazott osztályokkal. A PCRE, a Python vagy a Java mintái általában szintén működnek, de az azokra jellemző szintaxist, például a birtokló kvantorokat vagy a (?P<name>…) alakot elutasítja, mert a böngésző nem támogatja.

Miért nincs bekeretezve a nem rögzítő csoportom?

Egy (?:\.[\w-]+) csoport csak azért fog össze elemeket, hogy a kvantor vagy az alternatíva mindegyikre vonatkozzon. Nem hoz létre rögzítést, ezért a diagram keret nélkül mutatja a tartalmát és a ciklusát, ami olvashatóbbá teszi a rajzot. A beágyazott flagekkel rendelkező csoportok keretet kapnak, és a flagekkel feliratozva jelennek meg.

Mi a különbség az átugró sín és a ciklus között?

Az elem fölötti sín azt jelenti, hogy „nullaszor is előfordulhat”, az alatta lévő pedig azt, hogy „ismétlődhet”. A ? csak a felső, a + csak az alsó sínt kapja, a * mindkettőt. Egy {2,4} kvantornál a ciklus „2–4-szer” feliratot visel.

Felhasználhatom a diagramot a dokumentációmban?

Igen. Az SVG-export önálló vektorfájl fehér háttérrel és sötét vonalakkal, ideális README-fájlokhoz, wikikhez és diákhoz. A PNG-export a képernyőn látható rajz kétszeres méretében készül, hogy a nagy pixelsűrűségű kijelzőkön is éles legyen.

Van méretkorlát?

A minták legfeljebb 5000 karakter hosszúak lehetnek. A nagyon hosszú kifejezésekből széles diagram lesz, amelyet vízszintesen görgethetsz; ha névvel ellátott részekre bontod őket, a diagram és a regex is könnyebben karbantartható.