Reguläre Ausdrücke in JavaScript: Vollständiger Leitfaden mit Beispielen
Reguläre Ausdrücke (regexp oder regex) sind ein leistungsstarkes Werkzeug zum Suchen, Ersetzen und Validieren von Textdaten. In JavaScript, insbesondere in der Node.js-Umgebung, werden reguläre Ausdrücke überall verwendet: von der Verarbeitung von Logs und dem Parsen von URLs bis hin zur Formularvalidierung und Textauszeichnung. In diesem Artikel behandeln wir die Grundlagen der Arbeit mit regulären Ausdrücken in JavaScript, betrachten die Syntax, Methoden und geben praktische Beispiele für Node.js.
Erstellen von regulären Ausdrücken in JavaScript
In JavaScript gibt es zwei Möglichkeiten, einen regulären Ausdruck zu erstellen:
- Literal-Schreibweise — die bequemste und gebräuchlichste Methode:
/pattern/flags. - RegExp-Konstruktor — wird verwendet, wenn das Muster dynamisch erstellt wird:
new RegExp('pattern', 'flags').
Beispiele:
// Literal-Schreibweiseconst regexLiteral = /hello/i; // Flag i — Groß-/Kleinschreibung ignorieren
// RegExp-Konstruktorconst pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');
console.log(regexLiteral.test('Hello, world!')); // trueconsole.log(regexConstructor.test('HELLO')); // trueWichtige Flags (Modifikatoren)
i— Groß-/Kleinschreibung ignorieren (case-insensitive).g— globale Suche (sucht alle Übereinstimmungen, nicht nur die erste).m— mehrzeiliger Modus (Anker^und$funktionieren für jede Zeile).s— "dotall"-Modus (Punkt.schließt das Zeilenumbruchzeichenein).u— vollständige Unicode-Unterstützung.y— "sticky"-Modus (Suche ab der aktuellen Position).
Methoden regulärer Ausdrücke in JavaScript
In JavaScript arbeiten reguläre Ausdrücke mit mehreren Methoden von Strings und dem RegExp-Objekt selbst zusammen.
Die test()-Methode
Prüft, ob eine Übereinstimmung in der Zeichenkette vorhanden ist. Gibt true oder false zurück.
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;console.log(emailRegex.test('user@example.com')); // trueconsole.log(emailRegex.test('invalid-email')); // falseDie exec()-Methode
Führt eine Suche durch und gibt ein Array mit den Ergebnissen oder null zurück. Nützlich zum Extrahieren von Gruppen.
const urlRegex = /https?:\\/\\/([^\\/]+)\\/(.*)/;const url = 'https://pythonlib.ru/regular-expressions';const match = urlRegex.exec(url);
if (match) { console.log('Domain:', match[1]); // pythonlib.ru console.log('Pfad:', match[2]); // regular-expressions}String-Methoden, die mit regexp arbeiten
str.match(regex)— gibt ein Array der Übereinstimmungen zurück (odernull).str.matchAll(regex)— gibt einen Iterator aller Übereinstimmungen zurück (mit Gruppen).str.replace(regex, replacement)— ersetzt Übereinstimmungen.str.search(regex)— gibt den Index der ersten Übereinstimmung zurück (-1, wenn keine).str.split(regex)— teilt eine Zeichenkette anhand eines regulären Ausdrucks auf.
const text = 'Code: 12345, Artikel: ABC-6789';
// match — alle Ziffern findenconst numbers = text.match(/\\d+/g);console.log(numbers); // ['12345', '6789']
// replace — Bindestrich durch Doppelpunkt ersetzenconst cleaned = text.replace(/-/g, ':');console.log(cleaned); // 'Code: 12345, Artikel: ABC:6789'
// split — an Kommas und Leerzeichen aufteilenconst parts = text.split(/,\\s*/);console.log(parts); // ['Code: 12345', 'Artikel: ABC-6789']Grundlegende Muster und Sonderzeichen
Zum Erstellen präziser Muster werden Metazeichen und Quantifizierer verwendet. Hier sind die wichtigsten: