Regex tester

Voer een patroon in, kies de flags en plak je testtekst: de regex tester toont elke match met zijn index, de inhoud van genummerde en benoemde capture groups en legt elk onderdeel van het patroon in het Nederlands uit. Er wordt gematcht met de JavaScript-engine (ECMAScript) van je browser.

Voer het in zonder de schuine strepen eromheen, bv. \d+ in plaats van /\d+/. Het patroon maakt deel uit van de link en kan gedeeld worden – de testtekst niet.
Je invoer wordt alleen in deze browser opgeslagen.

De tekst om te doorzoeken. Blijft in je browser en wordt niet in de link opgenomen.

Je tekst blijft in je browser: hij wordt niet verstuurd, niet opgeslagen en niet in de adresbalk gezet.

Resultaat

Resultaat
2 matches
Matches
Nr.IndexLengteMatch
125102026-09-27
250102026-10-15
Groepen per match
Nr.GroepNaamWaarde
11jahr2026
12monat09
13tag27
21jahr2026
22monat10
23tag15
Patroon uitgelegd
TokenBetekenis
(?<jahr>begin van groep 1, genaamd “jahr”
› \deen cijfer 0–9
› {4}het voorgaande element precies 4 keer
)einde van de groep
-de letterlijke tekst “-”
(?<monat>begin van groep 2, genaamd “monat”
› \deen cijfer 0–9
› {2}het voorgaande element precies 2 keer
)einde van de groep
-de letterlijke tekst “-”
(?<tag>begin van groep 3, genaamd “tag”
› \deen cijfer 0–9
› {2}het voorgaande element precies 2 keer
)einde van de groep
Als JavaScript-literal
/(?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\d{2})/g

Zo wordt het berekend

Deze regex tester gebruikt de JavaScript-variant van reguliere expressies zoals gedefinieerd door de ECMA-262-standaard en geïmplementeerd door je browser. Een patroon dat hier werkt, werkt precies zo in String.prototype.match, matchAll, replace en RegExp.prototype.test – in Chrome, Firefox, Safari en Node.js.

Het resultaat lezen

De flags

g vindt alle matches in plaats van alleen de eerste, i negeert hoofdlettergebruik, m zorgt dat ^ en $ per regel gelden, s laat de punt ook regeleindes matchen. u behandelt emoji en andere tekens buiten het Basic Multilingual Plane als één teken en schakelt Unicode-eigenschappen in zoals \p{L} (elke letter, ook é of ñ). v is de nieuwere versie van u met verzamelingsbewerkingen zoals [\p{L}--[a-z]]; u en v zijn niet te combineren. y (“sticky”) vindt alleen matches die direct op elkaar aansluiten.

Bescherming tegen oneindige loops en vastlopers

Patronen zoals a* of \b kunnen lege matches opleveren. Net als JavaScript zelf gaat de tester dan één teken verder (een volledig code point bij u/v), zodat er geen oneindige lus ontstaat. Er worden maximaal 1.000 matches gezocht.

Het grotere gevaar is catastrofale backtracking (ReDoS): geneste kwantoren zoals (a+)+$ proberen een exponentieel aantal combinaties op een string die niet matcht – 30 tekens kunnen de engine minutenlang bezighouden. Daarom draait de zoekopdracht in een aparte achtergrondthread en wordt hij na 2 seconden gestopt; de pagina blijft reageren. Vermijd zulke patronen ook in je eigen code, zeker bij gebruikersinvoer.

Verschillen met andere regex-varianten

PCRE (PHP), Python, Java en .NET verschillen in details: JavaScript kent geen possessive kwantoren (a++), geen atomic groups en geen \A- of \Z-ankers; \w dekt alleen A–Z, a–z, 0–9 en het liggende streepje – gebruik voor letters met accenten \p{L} met de u-flag.

Je testtekst wordt niet verzonden, niet opgeslagen en niet in de link opgenomen – alleen het patroon en de flags.

Veelgestelde vragen

Hoe test ik een reguliere expressie?

Typ het patroon zonder schuine strepen in het bovenste veld, vink de gewenste flags aan en plak je tekst. Alle matches worden direct gemarkeerd in de tekst en met hun index vermeld; daaronder zie je wat elke groep heeft vastgelegd.

Waarom matcht \w geen letters met accenten?

In JavaScript staat \w alleen voor A–Z, a–z, 0–9 en _. Gebruik voor letters in elke taal \p{L} met de u-flag, bv. [\p{L}\d_]+ voor een woord als “café”.

Wat is het verschil tussen greedy en lazy?

Greedy kwantoren (*, +, {2,}) pakken zoveel mogelijk tekst, lazy kwantoren met een vraagteken erachter (*?, +?) zo weinig mogelijk. Op “<b>x</b>” matcht <.+> de hele string, <.+?> alleen “<b>”.

Hoe geef ik een capture group een naam?

Gebruik (?<naam>…). In code lees je dit uit met match.groups.naam, in een vervangingsstring met $<naam>, en binnen het patroon met de backreference \k<naam>.

Waarom werd mijn zoekopdracht gestopt?

Die duurde langer dan 2 seconden – meestal door catastrofale backtracking met geneste kwantoren zoals (\w+)*. Vereenvoudig het patroon: geen geneste kwantoren, maak alternatieven ondubbelzinnig en anker met ^ en $.

Geldt het resultaat ook voor PHP of Python?

Voor eenvoudige patronen meestal wel, maar het is alleen gegarandeerd voor JavaScript. PHP (PCRE) en Python ondersteunen extra syntax zoals possessive kwantoren of \A, en Python schrijft benoemde groepen traditioneel als (?P<naam>…).

Bronnen en wettelijke basis

Bijgewerkt op:

Vergelijkbare tools