Reguliere Expressie Tester
还没有匹配结果
输入正则与文本后,这里会展示每个匹配、捕获组和命名分组。
统计
命名分组汇总
当前没有命名分组。
Gratis online reguliere expressie tester (Regex Tester) met real-time JS matching-testen, weergave van capture groups/named groups, vervangvoorbeeld, regex-syntaxis uitleg, ingebouwde Web Worker ReDoS-time-outbescherming, inclusief bibliotheek met veelgebruikte regex-sjablonen, ideaal voor ontwikkelaars om snel regex te debuggen en te valideren.
Gerelateerde aanbevelingen
Wat is een reguliere expressie (Regex/RegExp)?
Een reguliere expressie (Regular Expression, afgekort Regex/RegExp) is een taal voor tekstpatronen die met één tekenreeks een reeks strings beschrijft en matcht die voldoen aan bepaalde syntaxisregels. De geschiedenis gaat terug tot het wiskundige model van neuronen dat in de jaren vijftig werd voorgesteld door neuroloog Warren McCulloch en wiskundige Walter Pitts, later stelde wiskundige Stephen Kleene in 1956 op basis daarvan een algebraïsche beschrijving van «reguliere verzamelingen» voor. Ken Thompson, de vader van Unix, implementeerde reguliere expressies eind jaren zestig voor het eerst in de QED-editor, waarna reguliere expressies een kernfunctie werden van de Unix-gereedschapsketen (grep, sed, awk, vi).
In moderne programmeertalen zijn reguliere expressies vrijwel een standaardmogelijkheid — RegExp in JavaScript, de re-module in Python, java.util.regex in Java, de Regex-klasse in .NET, het regexp-pakket in Go bieden allemaal regex-ondersteuning. Reguliere expressies worden breed toegepast in scenario's zoals formuliervalidatie (e-mail/telefoonnummer/ID), tekst zoeken en vervangen (zoeken en vervangen in editors), loganalyse (extraheren van ERROR-logs), webcrawlers (HTML-inhoud extraheren), gegevensopschoning (ETL), route-matching, invoerfiltering en beveiliging (WAF-regels).
Kernbegrippen van reguliere expressies zijn onder andere: tekenklassen (\d cijfers, \w woordtekens, \s witruimte), kwantoren (* nul of meer, + een of meer, ? nul of een, {n,m} opgegeven aantal keren), ankers (^ begin, $ einde, \b woordgrens), groepen (... capture group, (?:...) non-capturing group, (?<name>...) named group), alternatie (|), tekenverzamelingen ([a-z]), lookaround ((?=...) positieve vooruitblik, (?!) negatieve vooruitblik) enz. Het beheersen van regex verhoogt de efficiëntie van tekstverwerking aanzienlijk, maar let ook op het voorkomen van prestatievalkuilen zoals ReDoS.
Toepassingsgevallen
- Online testen of regex voor e-mail, telefoonnummer, ID-nummer, URL enz. correct is bij het ontwikkelen van formuliervalidatieregels
- Extraheren van tijdstempels, foutmeldingen, IP-adressen uit ERROR/INFO-niveau logs met regex bij loganalyse
- Voorbeeld van regex-vervangingseffect bekijken bij het opschonen van gegevens/ETL, zoals datumformaatconversie, maskeren van gevoelige informatie (sterretjes in het midden van telefoonnummer)
- Controleren of regex voor inhoudsextractie correct de doel-HTML-fragmenten of JSON-velden matcht bij het schrijven van webcrawlers
- Begrijpen van de betekenis van elk meta-teken en kwantor via het «Uitleg»-paneel bij het leren van reguliere expressies, snel aan de slag met sjablonen
- Verdachte regex delen met collega's via een deellink tijdens Code Review om samen te debuggen en te optimaliseren
Hoe te gebruiken
- Voer de reguliere expressie in het invoerveld tussen / / bovenaan in (je hoeft zelf geen schuine strepen toe te voegen), voer de vlaggen in (zoals g, gi, gim) aan de rechterkant of klik op de knoppen hieronder om te schakelen
- Plak of typ de te matchen tekst in het gebied «Testtekst», overeenkomsten worden direct met verschillende kleuren gemarkeerd
- Klik op het paneel «Matchdetails» aan de rechterkant om de positie, inhoud, capture groups en named groups van elke overeenkomst te bekijken
- Ga naar het tabblad «Vervanggebied», voer een vervangstring in (ondersteunt verwijzingen zoals $1/$&/$<name>), bekijk direct het vervangresultaat
- Ga naar het tabblad «Expressie-uitleg» om de automatisch gegenereerde uitleg per element van de regex-syntaxis te bekijken
- Als je veelgebruikte sjablonen nodig hebt, klik je op «Gecategoriseerde sjablonenbibliotheek» aan de linkerkant en kies je het juiste sjabloon om met één klik in te vullen; klik na het debuggen op «Delen» om een link te genereren
Functies
- Web Worker sandbox-uitvoering: regex draait in een aparte Worker-thread met automatische time-out na 500 ms, voorkomt volledig vastlopen van de browser door ReDoS
- Real-time matching + kleuraccentuering: resultaten worden direct weergegeven bij invoer, verschillende overeenkomsten worden gemarkeerd met 5 kleuren, hover toont gekoppeld detailvenster
- Capture groups + named groups: voor elke overeenkomst worden automatisch alle capture groups ($1/$2) en named groups ($<name>) weergegeven met samenvattende statistieken
- Vervangvoorbeeld: voer een vervangstring in en bekijk direct het resultaat, ondersteunt snelknoppen voor $1/$&/$`/$'/$<name>-syntaxis
- Regex-syntaxis uitleg: analyseert automatisch de reguliere expressie, legt per element de betekenis uit van meta-tekens, kwantoren, groepen, ankers enz.
- 12 veelgebruikte sjablonen: ingebouwde 12 veelgebruikte regex-sjablonen voor e-mail/URL/telefoonnummer/Chinees/IPv4/UUID/datum/logs/HTML-tags enz., invullen met één klik
- 6 vlaggen schakelen: visuele knoppen voor het schakelen van g/i/m/s/u/y-vlaggen, geen syntaxis om te onthouden
- Deellink: genereer met één klik een URL met pattern/flags/text, kopieer naar collega om de testsituatie direct te reproduceren
- Uitvoeringsstatistieken: toont real-time aantal overeenkomsten, uitvoeringstijd (ms), totaal aantal capture groups, aantal named groups
- Maximum van 1500 overeenkomsten: automatisch afkappen om vastlopen van de pagina door zeer lange teksten te voorkomen, vriendelijke foutmelding bij syntaxisfouten in ongeldige regex
Codevoorbeelden
Regex-matching en vervanging in JavaScript
// Valideer e-mailformaat
const emailRe = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRe.test('user@example.com')); // true
// Extraheer named groups (datum parsing)
const dateRe = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = 'Vergadertijd: 2026-03-12, deadline: 2026-04-01';
const matches = [...text.matchAll(dateRe)];
for (const m of matches) {
console.log(m.groups.year, m.groups.month, m.groups.day);
}
// Vervanging: datumformaatconversie YYYY-MM-DD → MM/DD/YYYY
const reformatted = text.replace(dateRe, '$<month>/$<day>/$<year>');
console.log(reformatted);
// Vergadertijd: 03/12/2026, deadline: 04/01/2026De re-module gebruiken in Python
import re
# Zoek alle overeenkomsten
text = 'Contact: alice@example.com, bob@test.org'
emails = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)
print(emails) # ['alice@example.com', 'bob@test.org']
# Extraheer named groups (Python gebruikt ?P<name> syntaxis)
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, 'Gepubliceerd op 2026-03-12')
if m:
print(m.group('year'), m.group('month'), m.group('day'))
# Vervanging: middelste 4 cijfers van telefoonnummer maskeren
phone_re = r'(1[3-9]\d)\d{4}(\d{4})'
result = re.sub(phone_re, r'\1****\2', 'Telefoonnummer: 13812345678')
print(result) # Telefoonnummer: 138****5678java.util.regex gebruiken in Java
import java.util.regex.*;
class RegexDemo {
public static void main(String[] args) {
String text = "Error [2026-03-12 18:05:09] Connection failed";
// Compileer regex (in productie moet Pattern-instantie worden gecachet)
Pattern p = Pattern.compile(
"(?<level>INFO|WARN|ERROR)\\s+\\[(?<time>[^\\]]+)\\]\\s+(?<message>.+)"
);
Matcher m = p.matcher(text);
if (m.find()) {
System.out.println("Niveau: " + m.group("level"));
System.out.println("Tijd: " + m.group("time"));
System.out.println("Bericht: " + m.group("message"));
}
// Vervang alle cijfers
String cleaned = "abc123def456".replaceAll("\\d+", "*");
System.out.println(cleaned); // abc*def*
}
}Veelgestelde vragen
Wat is ReDoS? Waarom heeft regex testen bescherming tegen ReDoS nodig?
ReDoS (Regular Expression Denial of Service) is een situatie waarin kwaadwillig geconstrueerde reguliere expressies (zoals `(a+)+$` die lange strings matcht) catastrofale backtracking veroorzaken, wat leidt tot 100% CPU-gebruik, vastlopen van de browser of servercrashes. Deze tool voert regex-matching uit in een geïsoleerde Web Worker-omgeving met een automatische time-out van 500 ms, dus zelfs kwaadaardige regex die backtracking veroorzaakt zal je browser niet vastlopen — dit is de belangrijkste beveiligingsfunctie van deze tool.
Wat betekenen de zes vlaggen g, i, m, s, u, y in reguliere expressies?
g (global) globale matching, zoekt alle overeenkomsten in plaats van alleen de eerste; i (ignoreCase) negeert hoofdlettergevoeligheid; m (multiline) modus voor meerdere regels, zorgt ervoor dat ^ en $ het begin/einde van elke regel matchen; s (dotAll) zorgt ervoor dat de punt . alle tekens matcht inclusief nieuwe regel; u (unicode) Unicode-modus, verwerkt emoji en multi-byte tekens correct; y (sticky) sticky matching, matcht precies vanaf de lastIndex-positie. Deze tool biedt visuele schakelknoppen voor de 6 vlaggen, klik om direct in/uit te schakelen.
Wat zijn capture groups en named groups? Hoe gebruik je ze?
Capture groups worden omgeven door ronde haakjes `(pattern)`, na matching kunnen substrings worden geëxtraheerd via verwijzingen zoals $1, $2. Named groups gebruiken de syntaxis `(?<name>pattern)`, na matching kunnen ze worden verwezen via `$<name>`, wat de leesbaarheid van code verbetert. Na het matchen van een datum met `(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})` kun je deze bijvoorbeeld opnieuw formatteren in de vervangstring als `$<year>年$<month>月$<day>日`. Deze tool toont automatisch de resultaten van capture groups en named groups voor elke overeenkomst.
Welke programmeertalen ondersteunen de regex-syntaxis?
Deze tool is gebaseerd op de native RegExp-engine van JavaScript en is over het algemeen compatibel met de syntaxis van grote engines zoals JS/TypeScript, Python re-module, Java java.util.regex, PHP preg_*, Go regexp (allemaal gebaseerd op de PCRE/Perl-stroming), de belangrijkste verschillen zitten in sommige geavanceerde functies (zoals de `(?P<name>)` named group-syntaxis in Python, variabele lengte lookbehind in .NET). 99% van de reguliere expressies in dagelijkse ontwikkeling (validatie/extractie van e-mail, telefoonnummer, URL, datum enz.) zijn universeel voor alle engines, je kunt ze direct in deze tool testen en vervolgens naar code kopiëren.
Hoe deel ik een geteste regex met collega's?
Klik op de knop «Delen» in de bovenste werkbalk, de tool codeert automatisch de huidige reguliere expressie, vlaggen en testtekst in URL-parameters en kopieert de link naar het klembord. Collega's die de link openen zien exact dezelfde teststatus (pattern+flags+testText), ideaal voor teamsamenwerking en debuggen op afstand.
Wat betekenen de speciale symbolen $1, $&, $`, $' in de vervangstring?
In de vervangstring: $1, $2... duiden de N-de capture group aan; $& betekent de volledig gematchte tekst; $` betekent het deel vóór de gematchte tekst; $' betekent het deel na de gematchte tekst; $$ betekent het letterlijke teken $; $<name> betekent een named group. Vervanging van `(\d{4})-(\d{2})-(\d{2})` door `$2/$3/$1` zet bijvoorbeeld 2026-03-12 om naar 03/12/2026. In het vervanggebied van deze tool zijn er snelknoppen voor het invoegen van deze speciale symbolen.
Woordenlijst
- Regex / RegExp
- Afkorting van Regular Expression, een tekenreekssyntaxis die tekstmatchpatronen beschrijft, gebruikt voor het zoeken, vervangen en valideren van tekst.
- Capture Group
- Een subexpressie omgeven door ronde haakjes (pattern), matchresultaten kunnen per positie worden verwezen via $1, $2.
- Named Group
- Een capture group gedefinieerd met de syntaxis (?<name>pattern), kan op naam worden verwezen via $<name>, wat leesbaarder is dan numerieke verwijzingen.
- ReDoS
- Regular Expression Denial of Service, veroorzaakt door catastrofale backtracking die leidt tot exponentiële groei van de uitvoeringstijd van regex, waardoor de browser of server vastloopt.
- Backtracking
- Mechanisme van de NFA-regex-engine waarbij bij een mislukte matchpoging wordt teruggekeerd naar een eerdere positie om andere mogelijkheden te proberen; complexe regex kan leiden tot exponentiële backtracking.
- Vlaggen (Flags)
- Parameters die het matchgedrag van regex wijzigen, veelvoorkomend: g(globaal), i(hoofdlettergevoeligheid negeren), m(meerdere regels), s(dotAll), u(Unicode), y(sticky).
- Lookaround
- Nulbreedte-beweringen, waaronder positieve vooruitblik (?=...), negatieve vooruitblik (?!...), positieve terugblik (?<=...), negatieve terugblik (?<!...), controleren alleen de positie zonder tekens te verbruiken.
- PCRE
- Perl Compatible Regular Expressions, een veelgebruikte standaard voor regex-syntaxis die door de meeste talen zoals PHP, Java, Python wordt overgenomen.
- Web Worker
- API voor achtergrondthreads in de browser, onafhankelijk van de hoofdthread, deze tool gebruikt het om regex uit te voeren in een Worker, zodat zelfs bij ReDoS de gebruikersinterface niet wordt geblokkeerd.
- Kwantor (Quantifier)
- Syntaxis die aangeeft hoe vaak het vorige element wordt herhaald: *(0 of meer), +(1 of meer), ?(0 of 1), {n}(precies n keer), {n,m}(n tot m keer).
Snelzoekgids voor veelgebruikte regex-meta-tekens
| Meta-teken | Betekenis | Voorbeeld |
|---|---|---|
. | Elk willekeurig teken (behalve nieuwe regel, met s-vlag inclusief nieuwe regel) | a.c matcht abc, aXc, matcht niet a\nc |
\d | Cijferteken, equivalent aan [0-9] | \d{3} matcht 123, 456 |
\w | Woordteken, equivalent aan [A-Za-z0-9_] | \w+ matcht hello_123 |
\s | Witruimteteken (spatie/tab/nwe regel enz.) | a\sb matcht a b (spatie ertussen) |
^ | Begin van de string (met m-vlag — begin van de regel) | ^Hello matcht Hello aan het begin van de regel |
$ | Einde van de string (met m-vlag — einde van de regel) | end$ matcht end aan het einde van de regel |
\b | Woordgrens | \bcat\b matcht het op zichzelf staande woord cat, matcht niet category |
* | Herhaling van vorige element 0 of meer keer (gulzig) | ab*c matcht ac, abc, abbc |
+ | Herhaling van vorige element 1 of meer keer | ab+c matcht abc, abbc, matcht niet ac |
? | Vorige element 0 of 1 keer (of gebruikt voor niet-gulzig/lookaround) | colou?r matcht color en colour |
| | Alternatie/of, matcht links of rechts | cat|dog matcht cat of dog |
[...] | Tekenverzameling, matcht elk teken erin | [aeiou] matcht elke klinker |
Snelzoeksjablonen voor veelgebruikte reguliere expressies
| Doel | Reguliere expressie | Aanbevolen vlaggen |
|---|---|---|
| E-mailadres | [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} | g |
| Chinees mobiel telefoonnummer | 1[3-9]\d{9} | g |
| URL-link | https?:\/\/[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b[-a-zA-Z0-9()@:%_+.~#?&/=]* | gi |
| IPv4-adres | \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b | g |
| Datum YYYY-MM-DD | \d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01]) | g |
| ID-nummer (18 cijfers) | [1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx] | g |
| UUID | [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12} | gi |
Authoritative References
- Kleurenblindheid Simulator
- Kleuromzetter
- .htaccess naar Nginx Converter
- SQL Converter
- Cookie-parser
- Cron Expression Generator
- Cron Validator
- CSS Formatter
- CSS Minifier
- CSV naar Excel
- Valuta Converter
- Diff Checker
- Favicon-generator
- XML Formatter
- Hexadecimale Converter
- HTML Formatter
- HTML Minifier
- HTML naar Markdown
- Markdown naar HTML
- JavaScript Formatteren
- JavaScript Minifier
- JSX Formatteerder
- JSX Minifier
- Zoekwoordclustering
- Lorem Ipsum Generator
- Markdown Tabel Generator
- Meta Tag Generator
- Wachtwoordgenerator
- Wachtwoordsterktecontrole
- QR Code & Streepjescode Generator
- Reguliere Expressie Tester
- Slug Generator
- SQL Generator
- SQL Formatteerhulpmiddel
- Woordenteller
- Tijdgereedschap
- TS Formatter
- TS Minify
- TSX Formatter
- TSX Minify
- Unix Timestamp Omzetter
- UUID Generator
- YAML Formatter
- Case-converter