Utilia

Regex-tester

Test reguliere expressies in JavaScript live, met gemarkeerde matches, vangende groepen, vervanging en een uitleg in gewone taal van elk onderdeel.

Flags

Matches
#PositieMatchGroepen

Uitleg van het patroon

    Zo gebruik je de regex-tester

    1. 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.
    2. Vink de Flags aan die je nodig hebt: g (global), i (hoofdletterongevoelig), m (multiline), s (dotAll), u (unicode) of y (sticky).
    3. 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.
    4. 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.
    5. 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: $1 of $2 voor genummerde groepen, $<name> voor benoemde groepen, $& voor de hele match en $$ voor een letterlijk dollarteken. Zonder de flag g wordt 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.