Regex Tester
Test reguliere expressies met live markering, capture groups en een replace-voorbeeld — volledig in je browser.
Engine: JavaScript-reguliere expressies (ECMAScript), uitgevoerd door je browser. Het gedrag kan afwijken van PCRE, Python, Go, Java of .NET.
Patroon uitleggen
Voer een patroon in om het token voor token uitgelegd te zien.
Patroonbibliotheek
Klik op een patroon om het (met voorbeeldtekst) in de tester te laden.
Eén geval per regel. Begin met "+ " als het patroon moet overeenkomen, of met "- " als het NIET mag overeenkomen (de vlaggen g en y worden hier genegeerd).
Code genereren
Voer een patroon in om code te genereren.
Het patroon wordt gekopieerd zoals het is geschreven (alleen benoemde groepen, vlaggen en vervangingstokens worden aangepast). Controleer lookbehind, terugverwijzingen en Unicode-ondersteuning in de doelengine.
- \d — elk cijfer (0–9)
- \w — elk woordteken (letter, cijfer, underscore)
- \s — elk witruimteteken
- . — elk teken behalve een regeleinde
- ^ — begin van de string (of regel, met de multiline-flag)
- $ — einde van de string (of regel, met de multiline-flag)
- * — nul of meer keer het vorige token
- + — één of meer keer het vorige token
- ? — nul of één keer het vorige token
- {n,m} — tussen n en m herhalingen
- (...) — vastleggende groep, (?:...) — niet-vastleggende groep
- \b — woordgrens, | — alternatie (OF)
Hoe werkt het testen van een regex in de browser eigenlijk?
Een reguliere expressie is een compacte patroontaal om tekst te matchen — van "lijkt dit op een e-mailadres" tot "vind elk telefoonnummer in dit document" tot "verwijder alle HTML-tags uit deze string". Het addertje onder het gras is dat regex-syntax berucht is om subtiele foutjes: een `.` die eigenlijk geëscaped had moeten worden, een greedy `*` die meer opslokt dan de bedoeling was, een groep die niet capture wat je verwacht. Zo'n patroon blind schrijven en pas ontdekken dat het niet klopt zodra het al tegen productiedata draait, is een pijnlijke manier om die les te leren.
Deze tool draait volledig op de ingebouwde `RegExp`-engine van JavaScript zelf en voert je patroon uit zodra je typt, rechtstreeks in je browser — er komt geen server aan te pas, dus welke tekst je ook test (echte gebruikersdata, loglijnen, of iets anders dat je liever niet bij een externe dienst plakt) verlaat nooit je apparaat. Omdat het exact dezelfde engine is die jouw JavaScript-code straks in productie gebruikt, is wat je hier ziet — welke tekens matchen, hoe greedy quantifiers zich gedragen, of een groep iets capture — precies wat je ook tijdens runtime krijgt, en geen benadering vanuit een andere regex-variant.
Typ een patroon en zet de flags aan die je nodig hebt: `g` om elke match te vinden in plaats van te stoppen bij de eerste, `i` voor hoofdletterongevoelig matchen, `m` zodat `^` en `$` overeenkomen met het begin/einde van elke regel in plaats van de hele string, `s` zodat `.` ook regeleinden matcht. Elke match in je teststring wordt live gemarkeerd, en elke match wordt daaronder uitgesplitst in de volledige gematchte tekst, de positie ervan en eventuele capture groups — inclusief named groups zoals `(?<year>\d{4})` — zodat je meteen ziet of de groep die je wilde extraheren ook echt degene is die matchte. De sectie Vervangen laat precies zien wat `String.replace()` zou opleveren met jouw patroon en een vervangingsstring, inclusief group-backreferences zoals `$1` of `$<year>`.
Het overzicht hieronder behandelt de tokens die mensen midden in hun werk het vaakst vergeten — het verschil tussen `*` en `+`, waar een non-capturing group `(?:...)` voor dient, hoe `\b` een woordgrens markeert — zonder dat je de pagina hoeft te verlaten om het op te zoeken. Zodra je een patroon hebt dat zich gedraagt zoals je wilt tegen realistische testdata, kun je het direct in je code plakken. Moet je de omliggende data zelf ook nog valideren of herformatteren? Dan zijn de JSON-formatter en -validator en de Text Diff Checker vanzelfsprekende metgezellen.
Veelgestelde vragen
Laat een slecht regexpatroon de pagina vastlopen?
Nee — het matchen draait in een aparte Web Worker met een harde timeout, dus zelfs een patroon met catastrofale backtracking kan je tabblad niet blokkeren.
Toont het benoemde en genummerde capturegroepen?
Ja — elke treffer toont zijn genummerde groepen en eventuele benoemde groepen zoals (?<year>\d{4}).
Kan ik een vervanging bekijken voordat ik hem in code gebruik?
Ja — het paneel Vervangen toont precies wat String.replace() zou opleveren, inclusief terugverwijzingen naar groepen.