ToolHub
View All Posts

Regex-Spickzettel und gängige Muster

Reguläre Ausdrücke, kurz Regex, sind leistungsstarke Musterabgleichswerkzeuge, die in fast jeder Programmiersprache und jedem Texteditor verwendet werden. Obwohl die Syntax auf den ersten Blick kryptisch erscheinen mag, ermöglicht Ihnen die Beherrschung von Regex, Text auf präzise Weise zu durchsuchen, zu validieren, zu extrahieren und zu transformieren, die mit prozeduralem Code Dutzende von Zeilen erfordern würde. Dieser Leitfaden behandelt die grundlegende Syntax, gängige Muster und praktische Tipps, die Sie kennen müssen.

Spickzettel der grundlegenden Regex-Syntax

Zeichenklassen

MusterBedeutungBeispiel
.Beliebiges Zeichen außer Zeilenumbrucha.c trifft abc, a1c, a c
\dBeliebige Ziffer (0-9)\d\d trifft 42
\DBeliebiges Nicht-Ziffer-Zeichen\D trifft a, !, Leerzeichen
\wWortzeichen (a-z, A-Z, 0-9, _)\w+ trifft hello_123
\WNicht-Wortzeichen\W trifft @, #, Leerzeichen
\sLeerzeichen (Leerzeichen, Tab, Zeilenumbruch)a\sb trifft a b
\SNicht-Leerzeichen\S+ trifft hello
[abc]Beliebiges Zeichen in der Menge[aeiou] trifft Vokale
[^abc]Beliebiges Zeichen nicht in der Menge[^0-9] trifft Nicht-Ziffern
[a-z]Zeichenbereich[A-Za-z] trifft beliebige Buchstaben

Quantoren

MusterBedeutungBeispiel
*Null oder mehrab*c trifft ac, abc, abbc
+Einmal oder mehrab+c trifft abc, abbc
?Null oder einmalcolou?r trifft color, colour
{n}Genau n-mal\d{4} trifft 4-stellige Zahl
{n,}n-mal oder mehr\d{2,} trifft 2 oder mehr Ziffern
{n,m}n- bis m-mal\d{3,5} trifft 3-5 Ziffern

Anker und Grenzen

MusterBedeutungBeispiel
^Anfang der Zeichenfolge oder Zeile^Hello trifft Hello am Anfang
$Ende der Zeichenfolge oder Zeileworld$ trifft world am Ende
\bWortgrenze\bcat\b trifft cat als ganzes Wort
\BKeine Wortgrenze\Bcat trifft cat in scattered

Gruppierung und Alternierung

MusterBedeutungBeispiel
(abc)Erfassende Gruppe(ab)+ trifft abab
(?:abc)Nicht-erfassende Gruppe(?:ab)+ trifft abab
a|bAlternierung (oder)cat|dog trifft cat oder dog
\1Rückverweis auf Gruppe 1(\w)\1 trifft aa, bb
abc)Benannte ErfassungsgruppeReferenziert über name

Gängige Regex-Muster

Hier sind die am häufigsten verwendeten Regex-Muster in der Webentwicklung und Datenvalidierung:

E-Mail-Validierung

Ein praktischer E-Mail-Regex, der die meisten ungültigen Adressen erfasst, ohne zu streng zu sein: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$. Dieses Muster validiert die grundlegende E-Mail-Struktur und erlaubt gleichzeitig gängige Zeichen im lokalen Teil und erfordert einen gültigen Domainnamen mit einer TLD von mindestens zwei Zeichen.

URL-Validierung

Übereinstimmung mit HTTP- und HTTPS-URLs: ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$. Dieses Muster entspricht URLs mit optionalem www-Präfix, Domainname und optionalem Pfad.

Telefonnummer (USA)

US-Telefonnummern in verschiedenen Formaten: ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$. Dieses Muster behandelt Formate wie (555) 123-4567, 555-123-4567 und 5551234567.

IP-Adresse (IPv4)

Validierung der IPv4-Adresse: ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$. Dieses Muster stellt sicher, dass jedes Oktett zwischen 0 und 255 liegt.

Datum (JJJJ-MM-TT)

ISO-Datumsformat: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$. Dieses Muster validiert die Formatstruktur, prüft aber nicht auf gültige Tage pro Monat.

Hexadezimale Farbcodes

Übereinstimmung mit hexadezimalen CSS-Farben: ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$. Dieses Muster entspricht der 3-stelligen Kurzschreibweise (#fff) und der 6-stelligen (#ffffff) Form.

Fortgeschrittene Techniken

Lookahead und Lookbehind

Lookahead- und Lookbehind-Assertionen ermöglichen es Ihnen, ein Muster nur dann zu treffen, wenn ein anderes Muster danach (oder davor) folgt (oder nicht folgt), ohne den umgebenden Text in das Ergebnis einzubeziehen.

Gierige vs. faule Quantoren

<.*>bold<.*?>" abgleicht.

Profi-Tipp: Verwenden Sie beim Extrahieren von Inhalten zwischen Trennzeichen wie HTML-Tags oder Anführungszeichen immer faule Quantoren, um zu vermeiden, dass zu viel Text abgeglichen wird. Gieriges Matching ist die häufigste Quelle von Regex-Fehlern.

Leistungstipps für Regex

Regex testen und debuggen

Testen Sie Regex-Muster immer mit realen Eingaben, bevor Sie sie bereitstellen. Verwenden Sie einen interaktiven Regex-Tester, der Übereinstimmungen in Echtzeit hervorhebt und jeden Teil des Musters erklärt. Dies hilft Ihnen, Randfälle zu erkennen und zu verstehen, warum ein Muster eine bestimmte Eingabe trifft oder nicht. Probieren Sie unseren kostenlosen Regex-Tester aus, um Ihre Muster interaktiv zu erstellen und zu testen.

Verwenden Sie unsere kostenlosen Tools, um Ihre Regex-Muster zu erstellen, zu testen und zu debuggen.

Regex-Tester ausprobierenRegex-Spickzettel

Häufig gestellte Fragen

Was ist der Unterschied zwischen gierigen und faulen Regex-Quantoren?

Gierige Quantoren gleichen so viel Text wie möglich ab, während faule Quantoren so wenig Text wie möglich abgleichen. Das Hinzufügen eines Fragezeichens nach einem Quantor macht ihn faul. Zum Beispiel: .* gleicht die längstmögliche Zeichenfolge ab, während .*? die kürzeste abgleicht.

Sind reguläre Ausdrücke in allen Programmiersprachen gleich?

Nein, die Regex-Implementierung variiert je nach Sprache. Die meisten unterstützen die grundlegende POSIX-Syntax, aber fortgeschrittene Funktionen wie Lookbehind, benannte Gruppen und Unicode-Unterstützung unterscheiden sich. JavaScript hatte historisch eine eingeschränkte Regex-Unterstützung, hat aber in den letzten Jahren viele Funktionen hinzugefügt.

Können reguläre Ausdrücke HTML oder XML parsen?

Nein, reguläre Ausdrücke können HTML oder XML nicht zuverlässig parsen, da es sich um verschachtelte, kontextfreie Sprachen handelt. Regex hat kein Konzept von Verschachtelungstiefe oder ausgeglichenen Tags. Verwenden Sie einen geeigneten HTML- oder XML-Parser. Regex kann einfache Muster aus HTML extrahieren, scheitert aber an komplexen Strukturen.

Was sind Lookahead und Lookbehind in Regex?

<=pattern) ist ein positiver Lookbehind, der trifft, wenn das Muster davor steht. Die negativen Versionen verwenden ! anstelle von =.

Wie mache ich einen regulären Ausdruck case-insensitive?

Fügen Sie das i-Flag nach dem schließenden Begrenzer hinzu, um das gesamte Muster case-insensitive zu machen. Verwenden Sie in JavaScript /pattern/i. Verwenden Sie in Python re.IGNORECASE oder re.I als Flag. Sie können auch (?i) inline verwenden, um bestimmte Teile case-insensitive zu machen.

ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.