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/sohne 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
- Öffnen Sie den Regex-Tester
- Geben Sie Ihr Muster in das Regex-Feld ein
- Fügen Sie den Beispieltext in das Testfeld ein
- Wählen Sie Flags (
gglobal /iGroß-/Kleinschreibung ignorieren /mmehrzeilig) - Ü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#文本处理#教程#调试