Regex-railroaddiagram
Zet een JavaScript-regex om in een overzichtelijk railroaddiagram met groepen, alternatieven, lussen en lookarounds, en exporteer als SVG of PNG.
Flags: een combinatie van d g i m s u v y. Je kunt ook een literal zoals /\d+/g plakken.
- Vangende groepen
- –
- Alternatieven
- –
- Kwantoren
- –
Railroaddiagram
Blauw: letterlijke tekst. Groen: tekentypen en tekensets (rood: uitgesloten set). Paars: ankers en grenzen. Oranje: terugverwijzingen. Gestippelde kaders: groepen en lookarounds. Een spoor boven een element slaat het over, een spoor eronder herhaalt het.
Zo visualiseer je een reguliere expressie
- Typ of plak je patroon in het veld Reguliere expressie. Je kunt ook een volledige JavaScript-literal plakken, zoals
/^\d{3}-\d{4}$/gm: de slashes worden verwijderd en de flags gaan automatisch naar het flagsveld. - Voeg zo nodig flags toe (een combinatie van
d g i m s u v y). Flags veranderen hoe sommige onderdelen getekend worden: metmworden^en$“begin van de regel” en “einde van de regel”; metswordt de punt “elk teken”. - Het diagram wordt bijgewerkt terwijl je typt. Diagram tekenen tekent het opnieuw wanneer je wilt, en Volgend voorbeeld loopt door een paar veelgebruikte patronen (e-mail, telefoonnummer, hexkleur, prijs, HTML-tag, URL).
- Lees het diagram van links naar rechts, van de gevulde stip naar de stip met een ring. Elk pad dat je kunt volgen, is een tekenreeks die het patroon kan matchen.
- Gebruik SVG downloaden voor een scherpe vectorafbeelding (documentatie, presentaties), PNG downloaden voor een afbeelding op dubbele resolutie, of SVG-code kopiëren om de opmaak in een webpagina te plakken.
Beweeg de muis over een vak om te zien uit welk deel van het patroon het komt en op welke positie.
Zo lees je een railroaddiagram
Railroaddiagrammen, ook wel syntaxisdiagrammen genoemd, beschrijven een grammatica als een stelsel van sporen. Een reguliere expressie is precies zo’n grammatica, dus de tekening toont de structuur veel beter dan een compacte regel symbolen:
- Blauwe vakken zijn letterlijke tekst die precies zo moet voorkomen, bijvoorbeeld
“@”. - Groene vakken zijn tekentypen (
\dcijfer,\wwoordteken,.elk teken…) en tekenklassen. Een klasse zoals[\w.+-]wordt een vak met de kop “een van” en een lijst van alle elementen; een uitgesloten klasse[^…]is rood en heeft de kop “geen van”. - Paarse pillen zijn ankers en grenzen: begin en einde van de tekst of regel,
\bwoordgrens. Ze matchen een positie, geen teken. - Oranje gestippelde vakken zijn terugverwijzingen zoals
\1of\k<name>: dezelfde tekst als een groep die eerder is gematcht. - Gestippelde kaders zijn groepen. Vangende groepen zijn genummerd in de volgorde van hun openingshaakje (“groep #2 “domain””); niet-vangende groepen
(?:…)krijgen geen kader. Lookaheads en lookbehinds krijgen een roze kader met het label “gevolgd door” of “voorafgegaan door”, omdat ze de tekst controleren zonder hem te verbruiken. - Parallelle sporen zijn alternatieven, gescheiden door
|. - Met een spoor boven een element kun je het overslaan (
?,*,{0,n}). Een spoor eronder met een pijl loopt terug om het te herhalen (+,*,{n,m}). Andere aantallen dan de gebruikelijke staan onder de lus, zoals “2 tot 5 keer”, en luie kwantoren (+?,*?) krijgen het label “lazy”.
Foutmeldingen met positie
Het patroon wordt gecontroleerd door de eigen JavaScript-regexengine van je browser, dus wat deze tool accepteert, is precies wat new RegExp() met dezelfde flags accepteert. Weigert de engine het patroon, dan wijst de tool het foute teken aan met de positie en een dakje onder het patroon. De tool herkent een ) zonder partner, een groep die nooit wordt gesloten, een tekenklasse zonder ], een kwantor zonder iets om te herhalen (*a, a|+), een losse backslash aan het einde en {n,m}-kwantoren waarbij n groter is dan m. Andere fouten, zoals een terugverwijzing naar een groepsnaam die niet bestaat, worden getoond met de melding van de browser (die vaak in het Engels is).
De expressie wordt alleen gecompileerd om haar te valideren: ze wordt nooit op tekst uitgevoerd en er verlaat niets je browser.
Veelgestelde vragen
Welke regexvariant ondersteunt deze tool?
Reguliere expressies van JavaScript (ECMAScript), inclusief benoemde groepen, lookbehind, Unicode-eigenschappen \p{…} en de flag v met geneste klassen. Patronen uit PCRE, Python of Java werken meestal ook, maar syntaxis die alleen in die engines bestaat, zoals possessieve kwantoren of (?P<name>…), wordt geweigerd omdat de browser die niet ondersteunt.
Waarom krijgt mijn niet-vangende groep geen kader?
Een groep zoals (?:\.[\w-]+) groepeert elementen alleen zodat een kwantor of alternatief op allemaal van toepassing is. Hij vangt niets, dus het diagram toont de inhoud en de lus zonder kader, wat de tekening leesbaar houdt. Groepen met inline flags krijgen wel een kader, met die flags als label.
Wat is het verschil tussen het overslaanspoor en de lus?
Het spoor boven een element betekent “nul keer mag ook”, het spoor eronder betekent “het mag herhaald worden”. ? heeft alleen het bovenste spoor, + alleen het onderste en * beide. Bij een kwantor zoals {2,4} krijgt de lus het label “2 tot 4 keer”.
Kan ik het diagram in mijn documentatie gebruiken?
Ja. De SVG-export is een zelfstandig vectorbestand met een witte achtergrond en donkere lijnen, ideaal voor README-bestanden, wiki’s en presentaties. De PNG-export wordt op twee keer de grootte van de tekening op het scherm gemaakt, voor een scherpe weergave op schermen met een hoge pixeldichtheid.
Is er een maximale lengte?
Patronen mogen maximaal 5.000 tekens lang zijn. Heel lange expressies geven een breed diagram waar je horizontaal doorheen kunt scrollen; ze opsplitsen in benoemde delen maakt zowel het diagram als de regex vaak makkelijker te onderhouden.
Vergelijkbare tools
- Regex-tester Test reguliere expressies in JavaScript live, met gemarkeerde matches, vangende groepen, vervanging en een uitleg in gewone taal van elk onderdeel.
- JavaScript AST Explorer Plak JavaScript en verken de abstracte syntaxisboom (ESTree, geparsed door Acorn) in je browser. Klik op nodes om hun code te zien en exporteer de AST als JSON.
- JSON formatteren en valideren Gratis JSON-formatter en -validator die JSON in je browser leesbaar maakt, minifyt en controleert, met syntaxfouten gemeld per regel en kolom.