Reguläre Ausdrücke in JavaScript mit Beispielen für Node.js
Reguläre Ausdrücke (regex oder regexp) sind ein leistungsstarkes Werkzeug zum Suchen, Ersetzen und Extrahieren von Textinformationen. In JavaScript und Node.js werden sie überall eingesetzt: von der Formularvalidierung bis zum Parsen von Logs und der Verarbeitung von Anfragen. Dieser Artikel hilft Ihnen, die Syntax regulärer Ausdrücke anhand praktischer Beispiele zu erlernen, die Sie sofort in Node.js ausführen können.
1. Erstellen von regulären Ausdrücken in JavaScript
In JavaScript gibt es zwei Möglichkeiten, einen regulären Ausdruck zu erstellen:
- Literal-Syntax — das Muster wird in Schrägstriche eingeschlossen
/pattern/flags. Empfohlen für statische Muster. - RegExp-Konstruktor —
new RegExp('pattern', 'flags'). Wird verwendet, wenn das Muster dynamisch erstellt wird.
// Literal-Methodeconst regexLiteral = /hello/i;
// RegExp-Konstruktorconst pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');
console.log(regexLiteral.test('Hello World')); // trueconsole.log(regexConstructor.test('Hello World')); // true2. Grundlegende Methoden für die Arbeit mit regulären Ausdrücken
In Node.js und Browsern stehen vier wichtige Methoden für die Arbeit mit regex zur Verfügung. Lassen Sie uns jede anhand von Beispielen durchgehen.
Die test()-Methode
Prüft, ob eine Zeichenkette mit dem Muster übereinstimmt. Gibt true oder false zurück.
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;console.log(emailPattern.test('user@example.com')); // trueconsole.log(emailPattern.test('invalid-email')); // falseDie exec()-Methode
Sucht nach einer Übereinstimmung und gibt ein Array mit Details zurück (die Übereinstimmung selbst, Gruppen, Index, Eingabezeichenkette). Wenn keine Übereinstimmung gefunden wird — null.
const text = 'Preis: 1500 Rubel, Rabatt: 300 Rubel';const regex = /(\\d+)\\sRubel/g;let match;
while ((match = regex.exec(text)) !== null) { console.log(`Gefunden: ${match[1]} Rubel`); // Ausgabe: "Gefunden: 1500 Rubel" // Ausgabe: "Gefunden: 300 Rubel"}Die match()-Methode
Wird auf einer Zeichenkette aufgerufen. Gibt ein Array von Übereinstimmungen (mit dem g-Flag) oder detaillierte Informationen (ohne das g-Flag) zurück.
const logLine = 'Fehler 404: Seite nicht gefunden';const errorRegex = /(\\d{3}):\\s(.+)/;const result = logLine.match(errorRegex);
console.log(result[0]); // '404: Seite nicht gefunden'console.log(result[1]); // '404'console.log(result[2]); // 'Seite nicht gefunden'Die replace()-Methode
Ersetzt Übereinstimmungen durch eine angegebene Zeichenkette oder das Ergebnis einer Funktion. Ideal zum Formatieren von Daten.
const phone = '+7 (999) 123-45-67';const cleanPhone = phone.replace(/[\\s\\-\\(\\)\\+]/g, '');console.log(cleanPhone); // '79991234567'
// Ersetzung mit Gruppenconst date = '2024-01-15';const formattedDate = date.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$3.$2.$1');console.log(formattedDate); // '15.01.2024'3. Grundlegende Symbole und Flags regulärer Ausdrücke
Um effektiv mit regex zu arbeiten, müssen Sie die grundlegenden Metazeichen und Flags verstehen. Hier sind die wichtigsten:
Symbole für die Suche
.— jedes beliebige Zeichen (außer Zeilenumbruch)\\d— eine Ziffer (0-9)\\w— Buchstabe, Ziffer oder Unterstrich\\s— ein Leerzeichen (Whitespace)^— Anfang der Zeichenkette$— Ende der Zeichenkette*— 0 oder mehr Wiederholungen+— 1 oder mehr Wiederholungen?— 0 oder 1 Wiederholung{n,m}— von n bis m Wiederholungen
Flags
g— globale Suche (alle Übereinstimmungen)