RevealTheme logo

Regex-tester

Test reguliere expressies van JavaScript tegen elke invoer. Bekijk de overeenkomsten, groepen en vervangingen in realtime.

0 overeenkomst(en)

Wat zijn reguliere expressies en hoe leest u ze?

Reguliere expressies (regex) zijn een kleine domeinspecifieke taal om patronen in tekst te zoeken. Elke moderne programmeertaal heeft een regex-engine; deze tool gebruikt de native RegExp van JavaScript, die de ECMAScript 2018+-specificatie volgt en moderne functies ondersteunt zoals lookbehind-asserties, benoemde captuurgroepen, Unicode-eigenschapescapes en de dotAll-vlag. De basisbouwstenen: letterlijke tekens komen met zichzelf overeen (de regex 'kat' komt overeen met het woord kat); tekenklassen komen overeen met een teken uit een set ('[a-z]' komt overeen met kleine letters); kwantoren bepalen de herhaling (* nul of meer, + een of meer, ? nul of een, {3,5} tussen 3 en 5); ankers komen overeen met posities (^ begin van de tekenreeks, $ einde, \b woordgrens); groepen capteren deelovereenkomsten ((kat|hond) komt met een van beide overeen en captureert welke); de alternatie biedt een keuze. Regex blinkt uit in het analyseren van gestructureerde maar niet-grammaticale tekst (logboeken, e-mails, telefoonnummers, eenvoudige HTML-attributen) en faalt bij werkelijk recursieve structuren (volledige HTML, geneste JSON). Gebruik daarvoor een parser. Met deze tester kunt u een patroon herhaaldelijk verfijnen met directe feedback: wijzig de regex en de overeenkomsten worden bij elke toetsaanslag opnieuw berekend.

Veelvoorkomende toepassingen

  • Valideer het formaat van gebruikersinvoer (e-mails, telefoonnummers, postcodes) voordat je het naar je server stuurt.

  • Extraheer gestructureerde gegevens uit logbestanden (tijdstempels, IP's, statuscodes, aanvraagpaden).

  • Voer zoeken-en-vervangen uit over honderden bestanden met de regex-zoekfunctie van je editor.

  • Schrijf URL-herschrijfregels voor Nginx, Apache .htaccess of Vercel-rewrites.

  • Parse eenvoudige CSV-achtige formaten waar een echte parser overkill zou zijn.

  • Bouw validatiepatronen voor formulieren voor HTML-<input pattern="...">-attributen.

Veelgestelde vragen

Welke vlaggen worden ondersteund?
g (global: vindt alle overeenkomsten, niet alleen de eerste), i (hoofdletterongevoelig), m (multiline: ^ en $ komen overeen met regeleinden), s (dotAll: . komt overeen met regeleinden), u (unicode: correcte verwerking van multibyte-tekens), y (sticky: komt alleen overeen op lastIndex). Combineer vlaggen door ze aaneen te schrijven: 'gim' schakelt global + hoofdletterongevoelig + multiline in.
Hoe maak ik een overeenkomst over meerdere regels?
Twee verschillende behoeften: 'm' zorgt ervoor dat ^ en $ overeenkomen met regeleinden (behandelt elke regel als een aparte tekenreeks voor de ankers). 's' zorgt ervoor dat . overeenkomt met regeleinden (anders komt . overeen met alles behalve regeleinden). Gebruik beide samen als u patronen moet matchen die zich over meerdere regels uitstrekken.
Wat is het verschil tussen gulzige en luie kwantoren?
Gulzige kwantoren (*, +, {n,m}) matchen zoveel mogelijk. Luie kwantoren (*?, +?, {n,m}?) matchen zo weinig mogelijk. Het klassieke voorbeeld: de regex '<.*>' op '<a><b>' matcht het geheel '<a><b>'; '<.*?>' matcht alleen '<a>'.
Wanneer mag ik GEEN regex gebruiken?
Wanneer de structuur werkelijk recursief is (HTML, JSON, gebalanceerde haakjes). Wanneer u elk randgeval correct moet afhandelen (datums met tijdzones analyseren, namen met apostroffen). Wanneer de grammatica van de invoer goed gedefinieerd is en er een analysebibliotheek bestaat. Beroemd antwoord op Stack Overflow: regex is geweldig om patronen te vinden, verschrikkelijk om talen te analyseren.
Wat zijn benoemde captuurgroepen?
In plaats van dat (\d{4})-(\d{2})-(\d{2}) genummerde groepen retourneert, gebruikt u (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) en benadert u de overeenkomsten als match.groups.year. Veel onderhoudbaarder in echte code.
Waarom is mijn regex traag bij bepaalde invoer?
Catastrofale backtracking. Geneste kwantoren zoals (a+)+ kunnen exponentiële tijd kosten bij vijandige invoer. Vermijd geneste kwantoren en overlappende alternaties. De JavaScript-engine heeft geen time-out, dus een slechte regex kan een verzoek laten vastlopen. Gebruik voor productie het npm-pakket safe-regex om riskante patronen te detecteren.
Komt dit overeen met wat mijn regex-engine op de server doet?
Grotendeels: de belangrijkste regex-varianten (PCRE, re van Python, regex van Ruby, Java) lijken op elkaar maar hebben subtiele verschillen. De lookbehind-syntaxis, het gedrag van tekenklassen en de Unicode-verwerking variëren. Test het voor pariteit in productie ook in de doeltaal.

Gerelateerde tools