Utilia

Regex vizualizator

Pretvori JavaScript regularni izraz u pregledan railroad dijagram s grupama, alternativama, petljama i lookaroundima, pa ga izvezi kao SVG ili PNG.

Zastavice: bilo koje od d g i m s u v y. Možeš zalijepiti i literal poput /\d+/g.

Grupe za hvatanje
–
Alternative
–
Kvantifikatori
–

Railroad dijagram

Plavo: doslovni tekst. Zeleno: tipovi znakova i skupovi (crveno: isključeni skup). Ljubičasto: sidra i granice. Narandžasto: povratne reference. Isprekidani okviri: grupe i lookaround. Staza iznad elementa preskače ga, staza ispod ponavlja ga.

Kako vizualizovati regularni izraz

  1. Upiši ili zalijepi uzorak u polje Regularni izraz. Možeš zalijepiti i cijeli JavaScript literal poput /^\d{3}-\d{4}$/gm: kose crte se uklanjaju, a zastavice se automatski prebacuju u polje za zastavice.
  2. Dodaj Zastavice ako su ti potrebne (bilo koje od d g i m s u v y). Zastavice mijenjaju način crtanja nekih dijelova: s m ^ i $ postaju „početak reda“ i „kraj reda“, a sa s tačka postaje „bilo koji znak“.
  3. Dijagram se osvježava dok pišeš. Nacrtaj dijagram ga po potrebi iscrtava ponovo, a Sljedeći primjer prolazi kroz nekoliko uobičajenih uzoraka (e-pošta, broj telefona, heks boja, cijena, HTML oznaka, URL).
  4. Čitaj dijagram slijeva nadesno, od popunjene tačke do tačke s prstenom. Svaka staza kojom možeš proći je niz koji uzorak može prepoznati.
  5. Koristi Preuzmi SVG za oštru vektorsku sliku (dokumentacija, prezentacije), Preuzmi PNG za sliku u dvostrukoj rezoluciji ili Kopiraj SVG kod da zalijepiš markup u web stranicu.

Zadrži miš iznad okvira da vidiš dio uzorka iz kojeg potiče i njegovu poziciju.

Kako čitati railroad dijagram

Railroad dijagrami, poznati i kao sintaksni dijagrami, opisuju gramatiku kao skup staza. Regularni izraz je upravo takva gramatika, pa crtež prikazuje njegovu strukturu mnogo bolje od guste linije simbola:

  • Plavi okviri su doslovni tekst koji se mora pojaviti kako je napisan, na primjer „@“.
  • Zeleni okviri su tipovi znakova (\d cifra, \w znak 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 s naslovom „nijedno od“.
  • Ljubičaste pilule su sidra i granice: početak i kraj teksta ili reda, granica riječi \b. One prepoznaju poziciju, a ne znak.
  • Narandžasti isprekidani okviri su povratne reference poput \1 ili \k<name>: isti tekst kao grupa koja je ranije prepoznata.
  • Isprekidani okviri su grupe. Grupe za hvatanje numerišu se redoslijedom otvorene zagrade („grupa #2 „domain““); grupe bez hvatanja (?:…) nemaju okvir. Lookahead i lookbehind dobijaju ružičast okvir s oznakom „iza njega slijedi“ ili „ispred njega je“, jer provjeravaju tekst bez njegovog trošenja.
  • Paralelne staze su alternative razdvojene znakom |.
  • Staza iznad elementa omogućava da se on preskoči (?, *, {0,n}). Staza ispod sa strelicom vraća se nazad da ga ponovi (+, *, {n,m}). Neuobičajeni brojevi ispisani su ispod petlje, na primjer „2 do 5 puta“, a lijeni kvantifikatori (+?, *?) označeni su kao „lijeno“.

Poruke o greškama s pozicijama

Uzorak provjerava vlastiti JavaScript pogon za regularne izraze tvog preglednika, pa alat prihvata tačno ono što prihvata new RegExp() s istim zastavicama. Kada pogon odbije uzorak, alat pokazuje problematičan znak s njegovom pozicijom i oznakom ispod uzorka. Prepoznaje neuparenu ), grupu koja nikad nije zatvorena, klasu znakova kojoj nedostaje ], kvantifikator bez čega da se ponovi (*a, a|+), samotnu obrnutu kosu crtu na kraju i kvantifikatore {n,m} gdje je n veće od m. Ostale greške, poput povratne reference na ime grupe koje ne postoji, prikazuju se porukom preglednika.

Izraz se samo kompajlira radi provjere: nikada se ne izvršava nad tekstom i ništa ne napušta tvoj preglednik.

Česta pitanja

Koji regex dijalekt alat podržava?

JavaScript (ECMAScript) regularne izraze, uključujući imenovane grupe, lookbehind, Unicode escape sekvence svojstava \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 pogone, poput posesivnih kvantifikatora ili (?P<name>…), odbija se jer je preglednik ne podržava.

Zašto se moja grupa bez hvatanja ne crta kao okvir?

Grupa poput (?:\.[\w-]+) samo grupiše elemente da se kvantifikator ili alternacija odnosi na sve njih. Ne pravi hvatanje, pa dijagram prikazuje njen sadržaj i petlju bez okvira, što crtež održava čitljivim. Grupe 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 dozvoljeno“, a staza ispod znači „može se ponoviti“. ? 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?

Možeš. SVG izvoz je samostalna vektorska datoteka s bijelom pozadinom i tamnim linijama, idealna za README datoteke, wikije i prezentacije. PNG izvoz se iscrtava u dvostruko većoj veličini od prikaza na ekranu, za oštar prikaz na ekranima visoke gustoće.

Postoji li ograničenje veličine?

Uzorci mogu imati do 5 000 znakova. Veoma dugi izrazi daju širok dijagram koji možeš pomicati vodoravno; njihovo dijeljenje na imenovane dijelove često olakšava održavanje i dijagrama i regexa.