Reguläre Ausdrücke in JavaScript mit Beispielen: in der Praxis
\n\nReguläre Ausdrücke (RegExp) sind ein mächtiges Werkzeug zum Suchen, Ersetzen und Validieren von Text. In JavaScript, insbesondere in der Node.js-Umgebung, werden sie überall eingesetzt: vom Parsen von Logs bis zur Formularvalidierung. In diesem Artikel analysieren wir die Syntax, Methoden und schreiben praktische Beispiele, die Sie sofort in Ihren Projekten verwenden können.
\n\n1. Grundlagen der Syntax und Erstellung von RegExp
\n\nIn JavaScript kann ein regulärer Ausdruck auf zwei Arten erstellt werden: als Literal und mit dem Konstruktor. Das Literal eignet sich für statische Muster, der Konstruktor für dynamische.
\n\n// Literal (empfohlen)\nconst regexLiteral = /hello/gi;\n\n// Konstruktor (für dynamische Muster)\nconst pattern = "hello";\nconst flags = "gi";\nconst regexConstructor = new RegExp(pattern, flags);\n\nFlags (Modifikatoren):
\n- \n
g— globale Suche (findet alle Übereinstimmungen, nicht nur die erste) \n i— Groß-/Kleinschreibung ignorieren \n m— mehrzeiliger Modus (Anker^und$funktionieren für jede Zeile) \n s— erlaubt dem Punkt., mit dem Zeilenumbruchzeichen übereinzustimmen \n u— aktiviert vollständige Unicode-Unterstützung \n
Basis-Metazeichen:
\n- \n
.— jedes Zeichen außer Zeilenumbruch \n \\d— Ziffer (0-9) \n \\w— Buchstabe, Ziffer oder Unterstrich \n \\s— Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch) \n ^— Zeilenanfang \n $— Zeilenende \n []— Zeichenklasse (z.B.[a-z]— alle Kleinbuchstaben) \n ()— Erfassungsgruppe \n |— logisches ODER \n
2. Wichtige Methoden für die Arbeit mit regulären Ausdrücken
\n\nIn JavaScript gibt es mehrere Methoden, die mit RegExp arbeiten. Betrachten wir sie anhand praktischer Beispiele.
\n\n2.1. test() — Prüfung auf Übereinstimmung
\nDie Methode gibt true oder false zurück. Ideal für die Validierung.
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\nconst emails = ["user@example.com", "invalid-email", "test@domain.co.uk"];\n\nemails.forEach(email => {\n console.log(`${email}: ${emailPattern.test(email)}`);\n});\n// user@example.com: true\n// invalid-email: false\n// test@domain.co.uk: true\n\n2.2. exec() — Suche mit Details
\nGibt ein Array mit der Übereinstimmung und Erfassungsgruppen zurück. Praktisch zum Extrahieren von Daten.
\n\nconst logLine = "ERROR: 2023-10-15 14:30:00 - Server crash";\nconst logPattern = /^(ERROR|WARN|INFO): (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}) - (.+)$/;\nconst result = logPattern.exec(logLine);\n\nif (result) {\n console.log(`Level: ${result[1]}`);\n console.log(`Datum: ${result[2]}`);\n console.log(`Nachricht: ${result[3]}`);\n}\n// Level: ERROR\n// Datum: 2023-10-15 14:30:00\n// Nachricht: Server crash\n\n2.3. match() — Suche in einem String
\nEine String-Methode, die ein Array von Übereinstimmungen zurückgibt. Mit dem Flag g — alle Übereinstimmungen, ohne — die erste mit Gruppen.
const text = "Tel: +7(999)123-45-67, +7(495)765-43-21";\nconst phonePattern = /\\+7\\(\\d{3}\\)\\d{3}-\\d{2}-\\d{2}/g;\nconst phones = text.match(phonePattern);\n\nconsole.log(phones);\n// ['+7(999)123-45-67', '+7(495)765-43-21']\n\n2.4. replace() — Text ersetzen
\nErmöglicht das Ersetzen von Übereinstimmungen durch einen neuen String. Unterstützt spezielle Zeichen wie $1 für Erfassungsgruppen.
const messyDate = "2023/10/15";\nconst cleanDate = messyDate.replace(/(\\d{4})\\/(\\d{2})\\/(\\d{2})/, "$3.$2.$1");\nconsole.log(cleanDate); // 15.10.2023\n\n