Regex testen und debuggen: Von den Grundlagen zu effizienten Mustern

Text

Warum Regex online testen?

Reguläre Ausdrücke sind mächtig, aber beim ersten Versuch leicht falsch zu machen. Ein Online-Tester hilft Ihnen:

  • Übereinstimmungen in Echtzeit hervorheben: Sehen Sie beim Tippen, was übereinstimmt
  • Erfassungsgruppen visualisieren: Jede Gruppe klar inspizieren
  • Flags schnell umschalten: g / i / m / s ohne Neubereitstellung wechseln
  • Syntaxfehler sofort erkennen: Ungültige Muster werden sofort markiert

Regex-Syntax-Spickzettel

Grundlegende Übereinstimmung

Syntax Bedeutung Beispiel Stimmt überein mit
. Beliebiges Zeichen (außer Zeilenumbruch) a.c abc, a1c
\d Ziffer \d{3} 123
\w Wortzeichen \w+ hello_1
\s Leerzeichen a\sb a b
[abc] Zeichenklasse [aeiou] a, e, i
[^abc] Negierte Klasse [^0-9] Nicht-Ziffern

Quantifizierer

Syntax Bedeutung Gierig / Faul
* Null oder mehr a* / a*?
+ Eins oder mehr a+ / a+?
? Null oder eins a? / a??
{n,m} Zwischen n und m a{2,4}

Gruppen und Referenzen

Syntax Bedeutung Beispiel
(abc) Erfassungsgruppe (\d{4})-(\d{2})
(?:abc) Nicht-erfassende Gruppe `(?:http
\1 Rückreferenz (\w)\1 stimmt mit aa, bb
(?<name>) Benannte Gruppe (?<year>\d{4})

Den Online-Regex-Tester verwenden

Schritte

  1. Öffnen Sie den Regex-Tester
  2. Geben Sie Ihr Muster in das Regex-Feld ein
  3. Fügen Sie den Beispieltext in das Testfeld ein
  4. Wählen Sie Flags (g global / i Groß-/Kleinschreibung ignorieren / m mehrzeilig)
  5. Überprüfen Sie Hervorhebungen und Übereinstimmungsdetails

Häufige Flags

Flag Bedeutung Standard
g Alle Übereinstimmungen finden Nur erste Übereinstimmung
i Groß-/Kleinschreibung ignorieren Groß-/Kleinschreibung beachten
m Mehrzeilenmodus Einzeilig
s `` stimmt mit Zeilenumbrüchen überein . stimmt nicht mit Zeilenumbrüchen überein
u Unicode-Modus

Häufige Fallgruben

1. Gierige Übereinstimmung

Text: <div>hello</div><div>world</div>
Muster: <div>.*</div>
Ergebnis: Die gesamte Zeichenkette wird als ein Block gematcht!

Lösung: <div>.*?</div>  ← faule Übereinstimmung, zwei separate Treffer

2. Katastrophales Backtracking

// Gefährlich: verschachtelte Quantifizierer verursachen exponentielles Backtracking
/^(a+)+$/.test('a'.repeat(30) + 'b');
// Dieser Test kann Sekunden dauern oder hängen

// Lösung: verschachtelte Quantifizierer vermeiden oder atomare Gruppen verwenden, falls unterstützt

3. Vergessen, Sonderzeichen zu escapen

Muster: price.com     ← . stimmt mit jedem Zeichen überein
Lösung: price\.com        ← stimmt nur mit price.com überein

Praktische Beispiele

Anwendungsfall Muster
US-Telefon (vereinfacht) ^\+?1?\d{10,11}$
E-Mail (einfach) ^[\w.-]+@[\w-]+\.[\w.]+$
URL ^https?:\/\/[\w.-]+(?:\.[\w]+)+[/\w.-]*$
IP-Adresse ^(\d{1,3}\.){3}\d{1,3}$
Datum YYYY-MM-DD `^\d{4}-(?:0[1-9]
CJK-Zeichen [\u4e00-\u9fff]+

FAQ

Muster funktioniert im Tester, aber nicht im Code?

Prüfen Sie, ob Sie das g-Flag vergessen haben oder ob Ihr String Zeilenumbrüche enthält, das Muster aber m / s fehlt.

Wie matche ich mehrzeiligen Text?

Verwenden Sie das s-Flag, damit . mit Zeilenumbrüchen übereinstimmt, oder verwenden Sie [\s\S] statt ..


Zusammenfassung

Regex ist für Entwickler unverzichtbar, aber die Syntax ist fehleranfällig. Verwenden Sie den Regex-Tester, um in Echtzeit zu validieren und zu debuggen. ToolsKu bietet auch Suchen & Ersetzen und Text-Diff für einen vollständigen Text-Workflow.

#正则表达式#Regex#文本处理#教程#调试