Regex Tester

Advertentie

Voer een reguliere expressie en testtekst in om overeenkomsten live gemarkeerd te zien.

/ /
Snelle patronen
Testtekst
Overeenkomsten
Advertentie

Over deze tool

Reguliere expressies vinden hun oorsprong in 1956, toen wiskundige Stephen Kleene het concept van "reguliere gebeurtenissen" introduceerde als notatie voor het beschrijven van patronen in de formele taaltheorie. Ruim een decennium later, in 1968, bracht Ken Thompson regex van theorie naar praktijk door patroonherkenning te implementeren in de ed-teksteditor, die later evolueerde tot grep—een tool waarvan de naam letterlijk staat voor "global regular expression print." Deze doorbraak maakte regex tot een onmisbaar gereedschap in het Unix-ecosysteem en legde de basis voor adoptie in vrijwel elke programmeertaal. In moderne softwareontwikkeling worden reguliere expressies gebruikt voor alles: van invoervalidatie en data-extractie tot zoek-en-vervang-bewerkingen en loganalyse. Talen als JavaScript, Python, Java en Perl implementeren elk regex-engines met subtiele variaties, maar de kernconcepten blijven universeel: tekenklassen, kwantoren, ankers, groepering en alternatie vormen een krachtige minitaal voor het beschrijven van tekstpatronen. Ondanks hun kracht staan reguliere expressies bekend om hun complexiteit. Compacte patronen kunnen moeilijk leesbaar en onderhoudbaar worden, wat leidde tot de beroemde grap dat u met regex nu twee problemen hebt. De syntaxis beloont precisie maar bestraft dubbelzinnigheid, en subtiele fouten kunnen onverwachte matches of catastrofale prestaties veroorzaken. Deze testtool overbrugt de kloof tussen het schrijven en begrijpen van regex. Door real-time matchmarkering, capture group-visualisatie en patroonuitleg kunt u interactief experimenteren. Alle verwerking vindt volledig plaats in uw browser—uw patronen en testgegevens worden nooit naar een server verzonden.

De Geschiedenis en Wetenschap van Reguliere Expressies

Reguliere expressies vinden hun oorsprong in de wiskundige theorie van formele talen, ontwikkeld door Stephen Kleene in 1956. Zijn concept van "reguliere gebeurtenissen" beschreef patronen die herkend konden worden door eindige automaten—abstracte machines met een vast aantal toestanden die invoer symbool voor symbool verwerken. Deze theoretische basis stelde vast dat elk patroon dat door een reguliere expressie beschreven kan worden, overeenkomt met een specifiek type rekenmachine. Ken Thompson bracht reguliere expressies van de wiskunde naar de informatica in 1968 toen hij patroonherkenning implementeerde in de QED- en ed-teksteditors bij Bell Labs. Zijn innovatie was het compileren van regex-patronen naar machinecode die een niet-deterministische eindige automaat (NFA) simuleerde, waardoor patroonherkenning snel genoeg werd voor interactief gebruik. Dit werk leidde rechtstreeks tot het grep-hulpprogramma, dat een van de meest invloedrijke Unix-tools werd. De evolutie van implementaties splitste zich in twee hoofdbenaderingen: Thompson's originele NFA-gebaseerde ontwerp (gebruikt door de meeste moderne talen waaronder JavaScript, Python en Java) en een deterministische eindige automaat (DFA)-benadering gebruikt door tools zoals awk. NFA-engines ondersteunen functies zoals terugverwijzingen en lookaheads die wiskundig onmogelijk zijn voor DFA-engines, maar kunnen lijden onder exponentieel backtracking bij pathologische patronen. Perl revolutioneerde reguliere expressies eind jaren '80 door functies toe te voegen ver voorbij Kleene's oorspronkelijke formalisme: lookaheads, lookbehinds, niet-hebzuchtige kwantoren, benoemde capture groups en Unicode-ondersteuning. Deze uitbreidingen maakten Perl-regex zo expressief dat ze een de facto standaard werden, wat leidde tot de PCRE-bibliotheek die wordt gebruikt door PHP, Apache en vele andere tools. JavaScript adopteerde zijn eigen regex-variant in de ECMAScript-specificatie en voegde incrementeel functies toe—meest recent de 'd' vlag voor matchindices en de 'v' vlag voor verbeterde Unicode-tekenklassen.

Hoe te gebruiken

  1. Voer uw regex-patroon in en selecteer vlaggen (g voor globaal, i voor hoofdletterongevoelig, m voor meerdere regels).
  2. Plak testtekst om overeenkomsten in real-time gemarkeerd te zien. Gebruik snelle patronen voor veelgebruikte regex.
  3. Bekijk matchdetails met capture groups en indices. Schakel vervangen in om vervangingspatronen te testen.

Methodologie

Deze tool gebruikt JavaScript's native RegExp-engine, die de ECMAScript-specificatie voor reguliere expressies implementeert. Patronen worden tijdens runtime gecompileerd met de RegExp-constructor, die de patroonstring en elke combinatie van vlaggen (g, i, m, s, u, y) accepteert. Als het patroon syntaxfouten bevat, gooit de constructor een uitzondering die de tool opvangt en als validatiebericht toont. Voor globale patronen (g-vlag ingeschakeld) gebruikt de tool een iteratieve RegExp.exec()-lus om elke overeenkomst in de teststring te vinden, waarbij volledige matchtekst, capture group-waarden, benoemde groepen en tekenindices worden verzameld. Zonder de globale vlag wordt alleen de eerste overeenkomst geretourneerd met volledige groepsinformatie. De exec()-aanpak levert rijkere data dan String.match(), inclusief de index-eigenschap die de exacte positie van elke match aangeeft. Matchmarkering wordt bereikt door documentverwerking in plaats van innerHTML-vervanging. De tool splitst de teststring bij matchgrenzen en wikkelt overeenkomende segmenten in gestylde span-elementen, waarbij de originele tekst exact behouden blijft. Deze aanpak voorkomt HTML-injectieproblemen en zorgt ervoor dat speciale tekens correct worden weergegeven. Het vervangingsvoorbeeld past String.replace() toe met het substitutiepatroon van de gebruiker voor een live preview.

Je resultaten begrijpen

Groene markering geeft overeenkomende tekstsegmenten in uw teststring aan. Elk gemarkeerd gebied komt overeen met een volledige match van uw patroon. Bij het gebruik van capture groups (haakjes) toont het detailpaneel de volledige match als Groep 0 en elke capture group sequentieel genummerd vanaf Groep 1. Benoemde groepen gedefinieerd met (?...) syntaxis verschijnen met hun labels. De vlaggen die u selecteert veranderen het matchgedrag fundamenteel. De 'g' (globale) vlag vindt elk voorkomen in plaats van te stoppen bij de eerste match. De 'i' vlag schakelt hoofdletterongevoelige matching in. De 'm' (meerregelige) vlag laat ^ en $ overeenkomen bij regelgrenzen in plaats van alleen aan het begin en einde van de gehele string, wat essentieel is bij het testen tegen meerregelige invoer. De 's' (dotAll) vlag laat het punt-metateken ook overeenkomen met newline-tekens. Veelgebruikte afkortingsklassen vergemakkelijken patroonopbouw: \d komt overeen met elk cijfer (equivalent aan [0-9]), \w komt overeen met woordtekens (letters, cijfers, underscore), en \s komt overeen met witruimte inclusief spaties, tabs en newlines. Kwantoren besturen herhaling: * betekent nul of meer, + betekent een of meer, ? betekent nul of een, en {n,m} specificeert een exact bereik. Escape altijd speciale regex-tekens met een backslash voor letterlijke matching. Test patronen grondig met randgevallen voordat u ze in productie gebruikt.

Praktische voorbeelden

E-mailvalidatie: ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$ komt overeen met '[email protected]' maar wijst 'gebruiker@' of '@domein.nl' af. Telefoonnummers: \d{3}[-.\s]?\d{3}[-.\s]?\d{4} komt flexibel overeen met '555-123-4567', '555.123.4567' en '5551234567'. URLs: https?://[\w.-]+\.[a-zA-Z]{2,}[/\w.-]* komt overeen met zowel http- als https-links. Data-extractie met capture groups: (\d{4})-(\d{2})-(\d{2}) toegepast op '2024-01-15' vangt jaar, maand en dag als aparte groepen ($1='2024', $2='01', $3='15'). Benoemde groepen maken dit duidelijker: (?\d{4})-(?\d{2})-(?\d{2}). Zoeken en vervangen: transformeer 'Achternaam, Voornaam' naar 'Voornaam Achternaam' met patroon (\w+),\s*(\w+) en vervanging $2 $1. HTML-tag extractie: <(\w+)[^>]*> komt overeen met openingstags waarbij de tagnaam in Groep 1 wordt vastgelegd.

Tips en Best Practices

Begin eenvoudig en bouw geleidelijk complexiteit op. Schrijf een basispatroon dat overeenkomt met uw doeltekst en voeg vervolgens een voor een beperkingen toe. Het testen van elke toevoeging zorgt ervoor dat u begrijpt wat elk deel van uw expressie doet. Gebruik niet-vangende groepen (?:...) wanneer u groepering nodig hebt voor alternatie of kwantoren maar de gematchte inhoud niet hoeft te extraheren. Dit houdt uw groepsnummering schoon en kan de prestaties verbeteren. Wees specifiek met tekenklassen in plaats van te vertrouwen op het punt-metateken (.). Een patroon als [a-zA-Z0-9] is preciezer dan \w omdat \w ook underscores matcht. Specificiteit vermindert valse positieven. Overweeg altijd randgevallen: lege strings, strings met alleen witruimte, zeer lange invoer en Unicode-tekens. Schakel de 'u' vlag in bij tekst die emoji's of tekens buiten het Basic Multilingual Plane kan bevatten. Vermijd catastrofale backtracking door kwantoren niet binnen andere kwantoren te nesten (zoals (a+)+ patronen). Deze kunnen exponentiële tijd veroorzaken bij bepaalde invoer.

Alle berekeningen worden lokaal in je browser uitgevoerd. Er worden geen gegevens naar een server gestuurd.

Deze tool insluiten

Code ophalen

Was deze tool nuttig?
Wil je ons meer vertellen?
0/500
Wil je dat we contact opnemen?
Bedankt voor je feedback!

Veelgestelde vragen

Wat betekenen de regex-vlaggen?
g (global) vindt alle overeenkomsten, niet alleen de eerste. i (hoofdletterongevoelig) negeert hoofd-/kleine letters. m (meerdere regels) laat ^ en $ overeenkomen met regelgrenzen.
Hoe werken capture groups?
Haakjes ( ) creëren capture groups die delen van een overeenkomst extraheren. Gebruik $1, $2 enz. in vervangingen om naar groepen te verwijzen.
Welke veelgebruikte regex-patronen zijn beschikbaar?
De bibliotheek met snelle patronen bevat kant-en-klare patronen voor e-mail, URL, IP-adres, datum, telefoonnummer en meer.
Hoe werkt de vervangfunctie?
Schakel de vervangmodus in om vervangingspatronen te testen. Gebruik $1, $2 voor capture groups in uw vervangingsstring.
Werken mijn regex-patronen in andere programmeertalen?
Deze tool gebruikt de JavaScript RegExp-engine, die de kernsyntax deelt met de meeste talen (tekenklassen, kwantificeerders, alternatie, ankers). Sommige functies verschillen echter tussen talen. JavaScript-specifieke functies zoals lookbehind-assertions of \p{} Unicode-property-escapes werken mogelijk niet identiek in Python, Java of PHP. Gebruik voor taaloverschrijdende compatibiliteit breed ondersteunde constructies.
Blijven mijn testgegevens privé?
Ja. Alle regex-matching en -vervanging vindt uitsluitend plaats in uw browser met de ingebouwde JavaScript RegExp-engine. Er worden nooit patronen of teststrings naar een server verzonden. Dit maakt de tool veilig voor het testen van patronen met gevoelige gegevens zoals e-mailadressen, logbestanden of bedrijfseigen content zonder privacyrisico.