Zo gebruik je de Regex Tester
- Voer je patroon in tussen de slashes, zonder de omringende
/. - Zet flags aan of uit, zoals
g (alle matches), i (hoofdletterongevoelig) en m (multiline). - Plak je testtekst. Matches worden rechts gemarkeerd en hieronder opgesomd met hun index en capture groups.
- Vink Vervangen aan en voer een vervanging in zoals
$1 of $<name> om String.replace vooraf te bekijken. - Kies een patroon uit de Patroonbibliotheek om te beginnen met een geteste regex voor e-mail, URL, IP of datum.
Reguliere expressies in JavaScript
Deze tester gebruikt de eigen RegExp-engine van je browser, dus de resultaten zijn precies wat String.match, matchAll, replace en RegExp.exec in JavaScript en Node.js teruggeven. Dat geldt ook voor moderne syntax: benoemde groepen (?<name>…), lookbehind (?<=…), Unicode property escapes zoals \p{L} met de u-flag en match-indices met de d-flag.
Wat de flags doen
| Flag | Naam | Effect |
g | global | Vind elke match in plaats van te stoppen bij de eerste. |
i | ignoreCase | Letters matchen ongeacht hoofdletters of kleine letters. |
m | multiline | ^ en $ matchen aan het begin en eind van elke regel. |
s | dotAll | . matcht ook regeleinden. |
u | unicode | Behandelt het patroon als codepoints; maakt \p{…} en \u{…} mogelijk. |
y | sticky | Matcht alleen op de huidige positie van lastIndex. |
d | hasIndices | Geeft begin- en eindposities voor elke capture group. |
Bescherming tegen catastrophic backtracking
Patronen met geneste quantifiers, zoals (a+)+$ of (\w|\d)*x, kunnen exponentieel veel tijd kosten bij invoer die bijna matcht. Op een normale webpagina bevriest het tabblad dan. Hier draait elke match in een Web Worker op de achtergrond die na één seconde wordt gestopt, en krijg je een duidelijke waarschuwing in plaats van een vastgelopen browser. Hetzelfde patroon in productiecode kan een ReDoS-kwetsbaarheid zijn, dus behandel de waarschuwing als een bug die je moet oplossen.
Tips voor betere regexes
- Veranker patronen met
^ en $ als je hele waarden valideert, anders slaagt een match ergens in de string al.
- Gebruik liever specifieke klassen zoals
[^"]* dan .*; die zijn sneller en voorkomen dat je te veel matcht.
- Gebruik niet-vangende groepen
(?:…) als je de gevangen waarde niet nodig hebt.
- Geef je groepen namen.
match.groups.year leest makkelijker dan match[1].
Veelgestelde vragen
Welke regex-variant gebruikt deze tester?
JavaScript (ECMAScript), via de ingebouwde RegExp van je browser. De meeste syntax is gelijk aan PCRE, Python en Java, maar features zoals possessive quantifiers, atomic groups en inline modifiers zoals (?i) zijn in JavaScript niet beschikbaar.
Waarom vindt mijn patroon maar één match?
Zonder de g-flag (global) stopt JavaScript na de eerste match. Zet g aan om elke match te vinden.
Hoe verwijs ik naar groepen in de vervanging?
Gebruik $1, $2… voor genummerde groepen, $<name> voor benoemde groepen, $& voor de hele match en $$ voor een letterlijk dollarteken.
Waarom stopte de tester met een timeout?
Het patroon deed er meer dan één seconde over op je invoer, wat bijna altijd catastrophic backtracking betekent. Zoek naar geneste quantifiers zoals (x+)+ of overlappende alternatieven zoals (a|a)* en herschrijf ze zodat elk teken maar op één manier kan matchen.
Worden mijn testgegevens ergens naartoe gestuurd?
Nee. Het matchen draait lokaal in een Web Worker in je browser. Je patroon en tekst worden alleen in je eigen browser bewaard, zodat ze er nog staan als je terugkomt.