logo
GeekFormat

Reguliere Expressie Tester

Regex Tester
//
无匹配
Worker · 500ms 超时中断
分类模板库
点选即可填充 pattern / flags / demo
测试文本37
匹配详情
0

还没有匹配结果

输入正则与文本后,这里会展示每个匹配、捕获组和命名分组。

匹配高亮预览· Hover / 点击右侧条目联动
Ada Lovelace Alan Turing Grace Hopper

统计

匹配数量
0
执行耗时
0ms
捕获组
0
命名分组
0

命名分组汇总

当前没有命名分组。

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

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

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

Hoe te gebruiken

  1. 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
  2. Plak of typ de te matchen tekst in het gebied «Testtekst», overeenkomsten worden direct met verschillende kleuren gemarkeerd
  3. Klik op het paneel «Matchdetails» aan de rechterkant om de positie, inhoud, capture groups en named groups van elke overeenkomst te bekijken
  4. Ga naar het tabblad «Vervanggebied», voer een vervangstring in (ondersteunt verwijzingen zoals $1/$&/$<name>), bekijk direct het vervangresultaat
  5. Ga naar het tabblad «Expressie-uitleg» om de automatisch gegenereerde uitleg per element van de regex-syntaxis te bekijken
  6. 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

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.

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.

术语表

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-tekenBetekenisVoorbeeld
.Elk willekeurig teken (behalve nieuwe regel, met s-vlag inclusief nieuwe regel)a.c matcht abc, aXc, matcht niet a\nc
\dCijferteken, equivalent aan [0-9]\d{3} matcht 123, 456
\wWoordteken, equivalent aan [A-Za-z0-9_]\w+ matcht hello_123
\sWitruimteteken (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
\bWoordgrens\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 keerab+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 rechtscat|dog matcht cat of dog
[...]Tekenverzameling, matcht elk teken erin[aeiou] matcht elke klinker

Snelzoeksjablonen voor veelgebruikte reguliere expressies

DoelReguliere expressieAanbevolen vlaggen
E-mailadres[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}g
Chinees mobiel telefoonnummer1[3-9]\d{9}g
URL-linkhttps?:\/\/[-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?)\bg
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

Code Examples

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/2026

De 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****5678

java.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*
    }
}

Authoritative References