Regex testen
Regex testen
Regex testen ondersteunt realtime matches, capture groups, benoemde groepen en vervangingsvoorbeelden en is geschikt voor patroonvalidatie, tekstanalyse en bulkvervangingen.
/
/g
Globaal zoeken
Hoofdletterongevoelig
Meerdere regels
Punt matcht regelovergang
Unicode-modus
Vaste positie
Testtekst
Vervangingstekst
Overeenkomstresultaten
Voer een patroon in om te beginnen met matchen
Vervangingsvoorbeeld
Snelstart
Veelvoorkomende scenario's
Haal ID's, e-mails, datums of eigen markeringen uit logs, HTML-broncode of ruwe tekst.
Controleer eerst of een patroon echt goed werkt voordat je het in code, formuliervalidatie of zoekregels gebruikt.
Gebruik capture groups of benoemde groepen om tekststructuren of veldinhoud batchgewijs te vervangen.
Gebruiksadvies
Beperkingen & compatibiliteit
Privacy en veiligheid
Veelgestelde vragen
Een reguliere expressie (regex) is een patroontaal voor het beschrijven van tekststructuren. Beschouw het als een 'geavanceerde zoekopdracht': in plaats van naar een vast woord te zoeken, zoekt u naar alles dat aan een regel voldoet.\n\nBijvoorbeeld: \\d{4}-\\d{2}-\\d{2} komt overeen met alle datums in de notatie JJJJ-MM-DD, en [\\w.]+@[\\w.]+ komt overeen met e-mailadressen. Regex wordt veel gebruikt voor: het zoeken en extraheren van tekst (het vinden van foutcodes in logs), formaatvalidatie (het controleren van telefoonnummers) en batchvervanging (het converteren van datumformaten).\n\nBijna elke programmeertaal (JavaScript, Python, Java, Go, etc.) en veel tools (VS Code, grep, sed) ondersteunen regex met grotendeels vergelijkbare syntaxis. Deze tool maakt gebruik van de JavaScript RegExp-engine voor snel online testen en leren.
JavaScript-regex retourneert standaard alleen de eerste overeenkomst. Dit is gedrag van de taalspecificatie en geen beperking van het hulpmiddel. Klik op de g-knop in de vlaggenbalk om globaal zoeken in te schakelen en alle overeenkomsten te bekijken.\n\nLet op de interactie tussen g en y: g scant de volledige tekst van begin tot eind, terwijl y (sticky) vereist dat elke overeenkomst precies begint waar de vorige eindigde. Als er tussenruimtetekens tussen de overeenkomsten staan, stopt y bij de eerste ruimte. Meestal is alleen het inschakelen van g zonder y voldoende.
Er zijn vier veelvoorkomende oorzaken: \n\n1. Niet-overeenkomende haakjes: elke ( moet een overeenkomende hebben ), elke [ moet een overeenkomende hebben ]. IDE's kunnen deze automatisch aanvullen, maar deze tool vereist handmatige koppeling.\n2. Verkeerd geplaatste kwantoren: kwantoren (*, +, ?, {n}) moeten een kwantificeerbaar element volgen. Combinaties zoals *+ of ?* zijn illegaal, tenzij de eerste kwantor ? voor luie wijziging (zoals *?).\n3. Onvolledige ontsnappingen: een eenzame \\ aan het einde is illegaal — deze moet aan een specifiek teken ontsnappen (zoals \\d, \\n, \\\\).\n4. Unicode-eigenschappen hebben u-vlag nodig: \\p{L}, \\p{Script=Han} en soortgelijke Unicode-eigenschap ontsnapt aan foutfouten zonder dat de u-vlag is ingeschakeld. Klik op de u-knop om deze in te schakelen.
Dit zijn vervangende referentietokens gedefinieerd door String.prototype.replace() van JavaScript:\n\n- $1, $2, ..., $99: verwijzen naar de inhoud die is vastgelegd door de nde capture-groep (...)\n- $&: de volledige overeenkomende tekst\n- $`: de tekst vóór de match\n- $': de tekst na de match\n- ${name}: de inhoud vastgelegd door de genoemde groep (?<name>...)\n\nBijvoorbeeld patroon (\\w+)\\s(\\w+) dat overeenkomt met "Hallo wereld" met vervanging $2-$1 produceert "wereld-hallo". Om een letterlijke $ in de vervanging op te nemen, gebruikt u $$ om eraan te ontsnappen.
Time-outs worden bijna altijd veroorzaakt door "catastrofale backtracking". Wanneer de regex-engine geneste kwantoren tegenkomt (zoals (a+)+b) of overlappende optionele paden, gaat deze terug door een exponentieel aantal combinaties, waardoor de matchtijd explodeert.\n\nTypische gevaarlijke patronen: (a+)+, (.*?)*, (.+)+$ etc. Oplossingen:\n1. Vervangen . met nauwkeurige karakterklassen, b.v. [^\\s]+ in plaats van .+\n2. Vermijd geneste kwantoren: verander (a+)+ in a+\n3. Verminder overlappende optionele paden — wijzig (a|ab)+ in a+b?\n\nNadat je het patroon hebt aangepast, klik je op de knop 'Opnieuw proberen' in het gebied met wedstrijdresultaten. De tool heeft een time-outbeveiliging van 4 seconden en bevriest uw browser niet.
Verschillende talen hebben verschillen in de regex-engine op drie hoofdgebieden: \n\n1. Syntaxisondersteuning varieert: JavaScript ondersteunt geen PCRE recursieve patronen (?R), voorwaardelijke vertakkingen (?(cond)yes|no) of atomaire groepen (?>...). De re-module van Python mist deze ook, maar de regex-module ondersteunt ze. Java ondersteunt atomaire groepen, maar geen recursie.\n2. De afhandeling van Unicode verschilt: Python 3 verwerkt \\w, \\d standaard opnieuw als Unicode; JavaScript gebruikt standaard ASCII. U moet de u-vlag handmatig inschakelen. Dit betekent dat \\w niet overeenkomt met Chinese karakters en dat \\b woordgrenzen niet van toepassing zijn tussen CJK-tekens.\n3. De semantiek van Newline verschilt: Python's . komt standaard niet overeen met \\n (hetzelfde als JavaScript), terwijl Pattern.DOTALL van Java zich hetzelfde gedraagt als de vlag van JavaScript.\n\nAanbeveling: gebruik deze tool voor snelle logische verificatie en voer vervolgens een definitieve bevestiging uit met de engine van uw doeltaal.