logo
GeekFormat

Regex-Tester

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

还没有匹配结果

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

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

统计

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

命名分组汇总

当前没有命名分组。

Kostenloser Online-Regex-Tester mit JS-Echtzeitübereinstimmungstests, Anzeige von Erfassungsgruppen/benannten Gruppen, Ersetzungsvorschau, Regex-Syntaxerklärung, integriertem ReDoS-Zeitüberschreitungsschutz über Web Worker und einer Bibliothek häufig verwendeter Regex-Vorlagen, ideal für Entwickler zum schnellen Debuggen und Validieren regulärer Ausdrücke.

Ähnliche Tools

Anwendungsfälle

  • Online-Testen, ob reguläre Ausdrücke für E-Mail, Telefon, Personalausweis, URL usw. bei der Entwicklung von Formularvalidierungsregeln korrekt sind
  • Extrahieren von Zeitstempeln, Fehlermeldungen und IP-Adressen aus Protokollen der Stufen ERROR/INFO mithilfe von Regex bei der Log-Analyse
  • Vorschau von Regex-Ersetzungseffekten bei der Datenbereinigung/ETL, wie Datumsformatkonvertierung, Maskierung sensibler Informationen (Sternchen in der Mitte von Telefonnummern)
  • Überprüfen, ob Inhaltsextraktions-Regex genau mit den Ziel-HTML-Fragmenten oder JSON-Feldern übereinstimmt, wenn Web-Crawler geschrieben werden
  • Verstehen der Bedeutung jedes Metazeichens und Quantifizierers über das Panel「Erklärung」beim Erlernen regulärer Ausdrücke, und schnelle Einarbeitung mithilfe von Vorlagen
  • Senden fragwürdiger regulärer Ausdrücke über Freigabelink an Kollegen während Code-Reviews, um gemeinsam zu debuggen und zu optimieren

Funktionen

  • Web-Worker-Sandbox-Ausführung: Regex läuft in einem unabhängigen Worker-Thread mit automatischer Unterbrechung nach 500 ms, verhindert vollständig, dass ReDoS den Browser einfriert
  • Echtzeitübereinstimmung + farbige Hervorhebung: Ergebnisse werden sofort bei der Eingabe angezeigt, verschiedene Übereinstimmungen mit 5 Farben hervorgehoben, Detail-Panel beim Hovern verknüpft
  • Erfassungsgruppen + benannte Gruppen: Jede Übereinstimmung wird automatisch erweitert, um alle Erfassungsgruppen ($1/$2) und benannten Gruppen ($<name>) anzuzeigen, mit zusammenfassenden Statistiken
  • Ersetzungsvorschau: Geben Sie eine Ersetzungszeichenkette ein, um eine Echtzeitvorschau zu sehen, unterstützt Schnellschaltflächen für $1/$&/$`/$'/$<name>-Syntax
  • Regex-Syntaxerklärung: Analysiert automatisch den regulären Ausdruck und erklärt elementweise die Bedeutung von Metazeichen, Quantifizierern, Gruppen, Ankern usw.
  • 12 häufig verwendete Vorlagen: Enthält 12 häufig verwendete Regex-Vorlagen wie E-Mail/URL/Telefon/Chinesisch/IPv4/UUID/Datum/Logs/HTML-Tags, per Klick ausfüllbar
  • 6-Flags-Umschaltung: Visuelle Schaltflächen zum Umschalten von g/i/m/s/u/y, keine Syntax auswendig lernen müssen
  • Freigabelink: Generiert eine URL mit pattern/flags/text per Klick, an Kollegen kopieren, um den Testzustand direkt zu reproduzieren
  • Ausführungsstatistiken: Zeigt in Echtzeit die Anzahl der Übereinstimmungen, Ausführungszeit (ms), Gesamtzahl der Erfassungsgruppen und Anzahl benannter Gruppen an
  • Obergrenze von 1500 Übereinstimmungen: Automatische Kürzung, um Seitenverzögerungen durch zu langen Text zu vermeiden, benutzerfreundliche Fehlermeldungen bei fehlerhafter Regex-Syntax

Anleitung

  1. Geben Sie einen regulären Ausdruck in das Eingabefeld zwischen / / oben ein (keine Schrägstriche selbst hinzufügen), geben Sie rechts die Flags ein (wie g, gi, gim) oder klicken Sie auf die Schaltflächen unten, um sie umzuschalten
  2. Fügen Sie den zu übereinstimmenden Textinhalt in den Bereich「Testtext」ein oder geben Sie ihn ein; die Übereinstimmungsergebnisse werden in Echtzeit farbig hervorgehoben
  3. Klicken Sie auf das Panel「Übereinstimmungsdetails」rechts, um Position, Inhalt, Erfassungsgruppen und benannte Gruppen jeder Übereinstimmung anzuzeigen
  4. Wechseln Sie zur Registerkarte「Ersetzungsbereich」, geben Sie eine Ersetzungszeichenkette ein (unterstützt Referenzen wie $1/$&/$<name>) und sehen Sie eine Echtzeitvorschau des Ersetzungsergebnisses
  5. Wechseln Sie zur Registerkarte「Ausdruckserklärung」, um die automatisch generierte elementweise Erklärung der Regex-Syntax anzuzeigen
  6. Wenn Sie häufig verwendete Vorlagen benötigen, klicken Sie links auf「Vorlagenbibliothek nach Kategorien」, um die entsprechende Vorlage auszuwählen und per Klick auszufüllen; klicken Sie nach dem Debuggen auf「Teilen」, um einen Link zu generieren

Häufig gestellte Fragen

Was ist ReDoS? Warum benötigen Regex-Tests Schutz vor ReDoS?

ReDoS (Regular Expression Denial of Service, Denial of Service durch reguläre Ausdrücke) tritt auf, wenn bestimmte bösartig konstruierte reguläre Ausdrücke (wie `(a+)+$` bei der Übereinstimmung langer Zeichenketten) katastrophales Backtracking auslösen, was zu 100 % CPU-Auslastung, Browser-Einfrieren oder Serverabstürzen führt. Dieses Tool führt Regex-Übereinstimmungen in einer Web-Worker-Sandbox mit automatischer Zeitüberschreitung von 500 ms aus, sodass selbst bei Eingabe bösartiger Ausdrücke, die Backtracking auslösen, Ihr Browser nicht einfriert – dies ist das zentrale Sicherheitsmerkmal dieses Tools.

Was bedeuten die sechs Flags g, i, m, s, u, y in regulären Ausdrücken?

g (global) globale Übereinstimmung, sucht alle Übereinstimmungen statt nur die erste; i (ignoreCase) Groß-/Kleinschreibung ignorieren; m (multiline) Mehrzeilenmodus, lässt ^ und $ auf Zeilenanfang/-ende passen; s (dotAll) lässt den Punkt . auf alle Zeichen einschließlich Zeilenumbrüche passen; u (unicode) Unicode-Modus, verarbeitet Emojis und Multibyte-Zeichen korrekt; y (sticky) sticky-Übereinstimmung, passt exakt ab der lastIndex-Position. Dieses Tool bietet visuelle Schaltflächen zum Umschalten der 6 Flags; klicken Sie, um sie in Echtzeit ein-/auszuschalten.

Was sind Erfassungsgruppen und benannte Gruppen? Wie werden sie verwendet?

Erfassungsgruppen werden mit Klammern `(pattern)` umschlossen; nach der Übereinstimmung können Teilzeichenketten über Referenzen wie $1, $2 extrahiert werden. Benannte Gruppen verwenden die Syntax `(?<name>pattern)`; nach der Übereinstimmung kann über `$<name>` darauf verwiesen werden, was die Lesbarkeit des Codes verbessert. Beispiel: Nach der Übereinstimmung eines Datums mit `(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})` können Sie es in der Ersetzungszeichenkette mit `$<year>年$<month>月$<day>日` umformatieren. Dieses Tool listet automatisch die Ergebnisse der Erfassungsgruppen und benannten Gruppen jeder Übereinstimmung auf.

Welche Regex-Syntaxen von Programmiersprachen werden unterstützt?

Dieses Tool basiert auf der nativen JavaScript-RegExp-Engine und ist weitgehend kompatibel mit der Syntax gängiger Engines wie JS/TypeScript, Pythons re-Modul, Java java.util.regex, PHP preg_*, Go regexp (alle basierend auf dem PCRE/Perl-Stil). Die Hauptunterschiede liegen in einigen erweiterten Funktionen (wie der Syntax für benannte Gruppen `(?P<name>)` in Python, Lookbehind variabler Länge in .NET). 99 % der regulären Ausdrücke in der täglichen Entwicklung (Validierung/Extraktion von E-Mails, Telefonnummern, URLs, Daten usw.) sind zwischen den Engines universell einsetzbar; Sie können sie direkt in diesem Tool testen und dann in Ihren Code kopieren.

Wie kann ich einen getesteten regulären Ausdruck mit Kollegen teilen?

Klicken Sie auf die Schaltfläche「Teilen」in der oberen Symbolleiste; das Tool kodiert automatisch den aktuellen regulären Ausdruck, die Flags und den Testtext in URL-Parameter und kopiert den Link in die Zwischenablage. Wenn Ihre Kollegen den Link öffnen, sehen sie exakt denselben Testzustand (pattern+flags+testText), ideal für Teamzusammenarbeit und Remote-Debugging.

Was bedeuten die speziellen Symbole $1, $&, $`, $' in Ersetzungszeichenketten?

In Ersetzungszeichenketten: $1, $2... stehen für die N-te Erfassungsgruppe; $& steht für den gesamten übereinstimmenden Text; $` steht für den Teil vor dem übereinstimmenden Text; $' steht für den Teil nach dem übereinstimmenden Text; $$ steht für das Literal $; $<name> steht für eine benannte Gruppe. Beispiel: Das Ersetzen von `(\d{4})-(\d{2})-(\d{2})` durch `$2/$3/$1` wandelt 2026-03-12 in 03/12/2026 um. Der Ersetzungsbereich dieses Tools bietet Schnelleinfügeschaltflächen für diese speziellen Symbole.

Was ist ein regulärer Ausdruck (Regex/RegExp)?

Ein regulärer Ausdruck (abgekürzt Regex/RegExp) ist eine Textmustsprache, die eine einzelne Zeichenkette verwendet, um eine Reihe von Zeichenketten zu beschreiben und damit übereinzustimmen, die bestimmten syntaktischen Regeln entsprechen. Seine Geschichte reicht bis in die 1950er Jahre zurück, als der Neurologe Warren McCulloch und der Mathematiker Walter Pitts ein mathematisches Neuronenmodell vorschlugen; später schlug der Mathematiker Stephen Kleene 1956 darauf aufbauend eine algebraische Beschreibung「regulärer Mengen」vor. Ken Thompson, der Vater von Unix, implementierte reguläre Ausdrücke erstmals Ende der 1960er Jahre im QED-Editor, und seitdem sind reguläre Ausdrücke zu einer Kernfunktion der Unix-Toolkette (grep, sed, awk, vi) geworden.

In modernen Programmiersprachen sind reguläre Ausdrücke fast eine Standardfunktion – JavaScripts RegExp, Pythons re-Modul, Javas java.util.regex, .NETs Regex-Klasse, Gos regexp-Paket bieten Regex-Unterstützung. Reguläre Ausdrücke werden häufig in der Formularvalidierung (E-Mail/Telefon/Personalausweis), Textsuche und -ersetzung (Suchen und Ersetzen in Editoren), Log-Analyse (Extrahieren von ERROR-Logs), Web-Crawling (HTML-Inhaltsextraktion), Datenbereinigung (ETL), Routenübereinstimmung, Eingabefilterung und Sicherheitsschutz (WAF-Regeln) und anderen Szenarien verwendet.

Zu den Kernkonzepten regulärer Ausdrücke gehören: Zeichenklassen (\d Ziffern, \d Wortzeichen, \s Leerzeichen), Quantifizierer (* null oder mehr, + eins oder mehr, ? null oder eins, {n,m} angegebene Anzahl), Anker (^ Anfang, $ Ende, \b Wortgrenze), Gruppen ((...) Erfassungsgruppe, (?:...) nicht erfassende Gruppe, (?<name>...) benannte Gruppe), Verzweigung (|), Zeichensätze ([a-z]), Lookaround ((?=...) positives Lookahead, (?!) negatives Lookahead) usw. Die Beherrschung von Regex kann die Textverarbeitungseffizienz erheblich steigern, aber Sie sollten auch darauf achten, Leistungsfallen wie ReDoS zu vermeiden.

术语表

Regex / RegExp
Abkürzung für Regular Expression (regulärer Ausdruck), eine Zeichenkettensyntax zur Beschreibung von Textübereinstimmungsmustern, die zum Suchen, Ersetzen und Validieren von Text verwendet wird.
Erfassungsgruppe (Capture Group)
Ein in Klammern (pattern) eingeschlossener Teilausdruck; die Übereinstimmungsergebnisse können positionsbezogen über $1, $2 referenziert werden.
Benannte Gruppe (Named Group)
Eine mit der Syntax (?<name>pattern) definierte Erfassungsgruppe; kann über $<name> namentlich referenziert werden, mit höherer Lesbarkeit als numerische Referenzen.
ReDoS
Regular Expression Denial of Service (Denial of Service durch reguläre Ausdrücke), verursacht durch katastrophales Backtracking, das die Regex-Ausführungszeit exponentiell ansteigen lässt und Browser oder Server zum Einfrieren bringt.
Backtracking
Mechanismus der NFA-Regex-Engine, bei dem bei einem fehlgeschlagenen Übereinstimmungsversuch auf frühere Positionen zurückgegangen wird, um andere Möglichkeiten zu versuchen; komplexe Regex können exponentielles Backtracking verursachen.
Flags
Parameter, die das Regex-Übereinstimmungsverhalten ändern; gängige sind g(global), i(Groß-/Kleinschreibung ignorieren), m(Mehrzeilen), s(dotAll), u(Unicode), y(sticky).
Lookaround
Nullbreiten-Assertionen, einschließlich positivem Lookahead (?=...), negativem Lookahead (?!...), positivem Lookbehind (?<=...), negativem Lookbehind (?<!...), die nur die Position beurteilen, ohne Zeichen zu konsumieren.
PCRE
Perl Compatible Regular Expressions (Perl-kompatible reguläre Ausdrücke), ein weit verbreiteter Regex-Syntaxstandard, der von den meisten Sprachen wie PHP, Java, Python übernommen wurde.
Web Worker
Eine Browser-API, die Hintergrund-Threads unabhängig vom Hauptthread bereitstellt; dieses Tool verwendet sie, um Regex in Workern auszuführen, sodass selbst bei ReDoS die UI nicht blockiert wird.
Quantifizierer (Quantifier)
Syntax zur Angabe der Wiederholungsanzahl des vorhergehenden Elements: *(0 oder mehr), +(1 oder mehr), ?(0 oder 1), {n}(genau n Mal), {n,m}(n bis m Mal).

Schnellreferenztabelle für häufig verwendete Regex-Metazeichen

MetazeichenBedeutungBeispielerklärung
.Beliebiges einzelnes Zeichen (ohne Zeilenumbruch; mit Flag s einschließlich Zeilenumbrüchen)a.c passt auf abc, aXc, nicht auf a\nc
\dZiffernzeichen, äquivalent zu [0-9]\d{3} passt auf 123, 456
\wWortzeichen, äquivalent zu [A-Za-z0-9_]\w+ passt auf hello_123
\sLeerzeichen (Leerzeichen/Tabulator/Zeilenumbruch usw.)a\sb passt auf a b (Leerzeichen dazwischen)
^Zeichenkettenanfang (mit Flag m Zeilenanfang)^Hello passt auf Hello am Zeilenanfang
$Zeichenkettenende (mit Flag m Zeilenende)end$ passt auf end am Zeilenende
\bWortgrenze\bcat\b passt auf das eigenständige Wort cat, nicht auf category
*Vorhergehendes Element 0 Mal oder öfter wiederholt (gierig)ab*c passt auf ac, abc, abbc
+Vorhergehendes Element 1 Mal oder öfter wiederholtab+c passt auf abc, abbc, nicht auf ac
?Vorhergehendes Element 0 oder 1 Mal (oder für nicht gierig/Lookaround verwendet)colou?r passt auf color und colour
|Verzweigung/oder, passt auf links oder rechtscat|dog passt auf cat oder dog
[...]Zeichensatz, passt auf eines der Zeichen[aeiou] passt auf beliebigen Vokal

Schnellreferenzvorlagen für häufig verwendete reguläre Ausdrücke

VerwendungRegulärer AusdruckEmpfohlene Flags
E-Mail-Adresse[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}g
Mobilnummer Festlandchina1[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-Adresse\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
Personalausweisnummer (18 Stellen)[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-Übereinstimmung und -Ersetzung in JavaScript

// E-Mail-Format validieren
const emailRe = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRe.test('user@example.com')); // true

// Benannte Gruppen extrahieren (Datumsanalyse)
const dateRe = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = '会议时间:2026-03-12,截止:2026-04-01';
const matches = [...text.matchAll(dateRe)];
for (const m of matches) {
  console.log(m.groups.year, m.groups.month, m.groups.day);
}

// Ersetzung: Datumsformatkonvertierung YYYY-MM-DD → MM/DD/YYYY
const reformatted = text.replace(dateRe, '$<month>/$<day>/$<year>');
console.log(reformatted);
// Besprechungszeit: 03/12/2026, Frist: 04/01/2026

Verwendung des re-Moduls in Python

import re

# Alle Übereinstimmungen finden
text = '联系: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']

# Extraktion mit benannten Gruppen (Python verwendet ?P<name>-Syntax)
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, '发布于 2026-03-12')
if m:
    print(m.group('year'), m.group('month'), m.group('day'))

# Ersetzung: Mittlere 4 Ziffern der Telefonnummer maskieren
phone_re = r'(1[3-9]\d)\d{4}(\d{4})'
result = re.sub(phone_re, r'\1****\2', '手机号:13812345678')
print(result)  # Telefon: 138****5678

Verwendung von java.util.regex 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";

        // Regex kompilieren (in Produktion sollte die Pattern-Instanz zwischengespeichert werden)
        Pattern p = Pattern.compile(
            "(?<level>INFO|WARN|ERROR)\\s+\\[(?<time>[^\\]]+)\\]\\s+(?<message>.+)"
        );
        Matcher m = p.matcher(text);

        if (m.find()) {
            System.out.println("级别: " + m.group("level"));
            System.out.println("时间: " + m.group("time"));
            System.out.println("消息: " + m.group("message"));
        }

        // Alle Ziffern ersetzen
        String cleaned = "abc123def456".replaceAll("\\d+", "*");
        System.out.println(cleaned); // abc*def*
    }
}

Authoritative References