Reguläre Ausdrücke in TypeScript: Syntax, Methoden und Beispiele
Reguläre Ausdrücke (regex) sind ein leistungsstarkes Werkzeug für die Arbeit mit Zeichenketten. In TypeScript ermöglichen sie nicht nur das Suchen, Ersetzen und Überprüfen von Text, sondern auch die strikte Typisierung der Ergebnisse. In diesem Artikel werden wir alle Aspekte der Arbeit mit RegExp in TypeScript behandeln: von der grundlegenden Syntax bis hin zu fortgeschrittenen Techniken mit Codebeispielen.
1. Erstellen von regulären Ausdrücken in TypeScript
In TypeScript gibt es, wie in JavaScript, zwei Möglichkeiten, einen regulären Ausdruck zu erstellen:
Literal-Syntax
Die gebräuchlichste und bequemste Methode ist die Verwendung von Schrägstrichen:
const pattern: RegExp = /hello/gi;Hier steht g für globale Suche, i für Groß-/Kleinschreibung ignorieren. Der Typ RegExp wird automatisch abgeleitet, kann aber zur besseren Lesbarkeit explizit angegeben werden.
RegExp-Konstruktor
Wird verwendet, wenn das Muster dynamisch erstellt wird:
const searchTerm: string = "world";const dynamicPattern: RegExp = new RegExp(searchTerm, "gi");Das zweite Argument ist ein String mit den Flags. Der Rückgabetyp ist RegExp.
2. Grundlegende Methoden von RegExp und String
TypeScript erbt alle Methoden von JavaScript, fügt ihnen aber eine strikte Typisierung hinzu. Betrachten wir die wichtigsten Methoden mit Beispielen.
Methode test()
Prüft, ob es eine Übereinstimmung in der Zeichenkette gibt. Gibt boolean zurück.
const emailRegex: RegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;const email: string = "user@example.com";
const isValid: boolean = emailRegex.test(email);console.log(isValid); // trueMethode exec()
Sucht nach einer Übereinstimmung und gibt detaillierte Informationen zurück. Gibt RegExpExecArray | null zurück.
const text: string = "Preis: 1500 Rubel, Rabatt: 200 Rubel";const pricePattern: RegExp = /(\\d+)\\s*Rubel/g;
let match: RegExpExecArray | null;while ((match = pricePattern.exec(text)) !== null) { console.log(`Gefunden: ${match[0]}, Zahl: ${match[1]}`);}// Ausgabe:// Gefunden: 1500 Rubel, Zahl: 1500// Gefunden: 200 Rubel, Zahl: 200Methode match() der Zeichenkette
Funktioniert ähnlich wie exec(), wird aber auf der Zeichenkette aufgerufen. Gibt RegExpMatchArray | null zurück.
const phone: string = "Kontakte: +7 (999) 123-45-67";const phoneRegex: RegExp = /\\+7\\s*\\(\\d{3}\\)\\s*\\d{3}-\\d{2}-\\d{2}/;
const result: RegExpMatchArray | null = phone.match(phoneRegex);if (result) { console.log(`Telefon gefunden: ${result[0]}`); // Telefon gefunden: +7 (999) 123-45-67}Methode replace()
Ersetzt Übereinstimmungen durch eine neue Zeichenkette. Gibt string zurück. Unterstützt einen Callback für komplexe Ersetzungen.
function formatDate(input: string): string { const datePattern: RegExp = /(\\d{4})-(\\d{2})-(\\d{2})/; return input.replace(datePattern, "$3.$2.$1");}
const isoDate: string = "2025-03-10";const formatted: string = formatDate(isoDate);console.log(formatted); // "10.03.2025"Methode split()
Teilt eine Zeichenkette anhand eines regulären Ausdrucks. Gibt string[] zurück.
const data: string = "Apfel;Birne;Orange;Banane";const items: string[] = data.split(/;\\s*/);console.log(items); // ["Apfel", "Birne", "Orange", "Banane"]3. Flags und ihre Kombinationen
Flags steuern das Verhalten des regulären Ausdrucks. In TypeScript werden sie entweder im Literal oder als zweites Argument des Konstruktors angegeben.
| Flag | Beschreibung | Beispiel |
|---|---|---|
g | Globale Suche (alle Übereinstimmungen) | /ab/g |
i | Groß-/Kleinschreibung ignorieren |