Regex-tester
Test reguliere expressies in JavaScript live, met gemarkeerde matches, vangende groepen, vervanging en een uitleg in gewone taal van elk onderdeel.
| # | Positie | Match | Groepen |
|---|
Uitleg van het patroon
Let op: een herhaalde groep bevat nog een open kwantor, bijvoorbeeld (a+)+. Zulke patronen kunnen exponentieel veel tijd kosten op tekst die bijna matcht (catastrophic backtracking).
Zo gebruik je de regex-tester
- Typ je patroon in het veld Reguliere expressie, zonder de slashes eromheen. De slashes en de actieve flags staan rond het veld, zoals in
/patroon/g. - Vink de Flags aan die je nodig hebt:
g(global),i(hoofdletterongevoelig),m(multiline),s(dotAll),u(unicode) ofy(sticky). - Plak de tekst die je wilt doorzoeken in Testtekst. Matches worden gemarkeerd terwijl je typt, en de tabel toont elke match met de positie en de vangende groepen.
- Wil je een vervanging uitproberen, vul dan Vervanging in. Het vak Resultaat na vervanging toont de tekst met elke match vervangen, klaar om te kopiëren.
- Lees de Uitleg van het patroon om te controleren wat elk deel van je regex doet. Weet je niet waar je moet beginnen? Klik op Voorbeeld laden.
Wat de tester laat zien
- Gemarkeerde matches: elke match in de testtekst wordt gemarkeerd, zodat je in één oogopslag ziet wat wel en wat niet wordt gevangen.
- Tabel met matches: het nummer van elke match, de positie (het aantal tekens vanaf het begin, geteld vanaf 0), de gematchte tekst en de waarde van elke vangende groep. Benoemde groepen zoals
(?<year>\d{4})staan onder hun naam, en groepen die niet aan de match hebben meegedaan, staan als “(niet gematcht)” vermeld. De eerste 1.000 matches worden getoond. - Vervanging: de vervangtekst gebruikt de JavaScript-syntaxis:
$1of$2voor genummerde groepen,$<name>voor benoemde groepen,$&voor de hele match en$$voor een letterlijk dollarteken. Zonder de flaggwordt alleen de eerste match vervangen. - Uitleg: het patroon wordt opgesplitst in tokens (letterlijke tekst, tekenklassen, ankers, groepen, kwantoren, lookarounds, terugverwijzingen), elk met een korte beschrijving in het Nederlands. Geneste groepen springen in, waardoor lange patronen veel makkelijker na te lopen zijn.
De flags in het kort
| Flag | Effect |
|---|---|
g |
Vindt alle matches in plaats van te stoppen bij de eerste |
i |
Negeert het verschil tussen hoofdletters en kleine letters |
m |
^ en $ matchen aan het begin en einde van elke regel |
s |
. matcht ook regeleinden |
u |
Volledige Unicode-modus: \u{…}, \p{…} en emoji worden als één teken behandeld |
y |
Sticky: elke match moet precies beginnen waar de vorige eindigde |
Catastrophic backtracking
Sommige patronen kosten exponentieel veel tijd op tekst die bijna matcht. Het klassieke voorbeeld is (a+)+$, getest op een lange reeks a’s gevolgd door een b: de engine probeert elke manier om de a’s over de twee kwantoren te verdelen voordat hij opgeeft. Dit probleem, bekend als ReDoS, heeft al echte websites platgelegd.
Deze tool beschermt je browser op drie manieren. Het matchen gebeurt in een achtergrondworker die na 1,5 seconde wordt gestopt; de testtekst is beperkt tot 100.000 tekens; en de uitleg waarschuwt je als een herhaalde groep nog een open kwantor bevat. Loopt een patroon in een time-out, herschrijf het dan zo dat elk teken maar op één manier gematcht kan worden, bijvoorbeeld a+$ in plaats van (a+)+$.
Veelgestelde vragen
Welke regexvariant gebruikt deze tool?
De JavaScript-engine (ECMAScript) van je browser, precies zoals new RegExp() en String.prototype.replace() in je code. De meeste syntaxis is gelijk aan PCRE, Python en Java, maar er zijn verschillen: possessieve kwantoren en atomaire groepen bestaan niet in JavaScript, en lookbehind wordt in alle actuele browsers ondersteund.
Waarom vindt mijn patroon maar één match?
De flag g staat uit. Zonder die flag stopt JavaScript na de eerste match, en de vervanging wijzigt ook alleen die ene.
Hoe match ik een letterlijke punt, haak of vraagteken?
Zet er een backslash voor: \., \[, \?. De uitleg toont zulke tekens met “(ge-escapet)”, zodat je het kunt controleren.
Wordt mijn tekst ergens naartoe gestuurd?
Nee. Het patroon en de tekst worden alleen in je browser verwerkt. Daardoor is deze tool veilig voor logbestanden of gegevens met persoonlijke informatie.
Waarom wijkt de positie af van de kolom in mijn editor?
Posities tellen tekens vanaf 0, over alle regels heen, zoals match.index in JavaScript. Een regeleinde telt als één teken, en een emoji buiten het Basic Multilingual Plane telt als twee.
Vergelijkbare tools
- 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.
- URL encoderen en decoderen Gratis URL-encoder en -decoder. Codeer queryparameters of volledige URL’s met procentcodering, decodeer %XX-reeksen en lees + als spatie, in je browser.
- Hash-generator Bereken MD5-, SHA-1-, SHA-256- en SHA-512-hashes van tekst of bestanden van elke grootte en controleer checksums. Alles draait in je browser.