Zum Inhalt springen

Lookahead und Lookbehind

Das Verständnis der fortgeschrittenen Themen zu JavaScript-Regulären Ausdrücken ist für jeden Entwickler von Vorteil, der seine Programmierkenntnisse verbessern möchte. Zu den fortgeschrittensten und leistungsstärksten Funktionen in diesem Bereich gehören Lookahead- und Lookbehind-Assertions. Diese Assertions ermöglichen es Entwicklern, nach Mustern in Texten zu suchen, ohne diese Muster in das Ergebnis aufzunehmen. Dieser Leitfaden zielt darauf ab, Lookahead- und Lookbehind-Assertions in JavaScript ausführlich zu erkunden, ergänzt durch zahlreiche praktische Beispiele.

Achtung

Reguläre Ausdrücke können knifflig sein, und es können Randfälle auftreten. Dies gilt insbesondere bei der Verwendung fortgeschrittener Konzepte wie Lookahead und Lookbehind. Verwenden Sie Online-Regex-Tester oder schreiben Sie Unit-Tests, um Ihre Ausdrücke gegen eine Vielzahl von Eingabeszenarien zu validieren, um sicherzustellen, dass sie sich wie erwartet verhalten.

Einführung in Lookahead- und Lookbehind-Assertions

Lookahead- und Lookbehind-Assertions sind Zero-Width-Assertions, das bedeutet, sie matchen eine Position innerhalb des Strings anstelle tatsächlicher Zeichen. Sie ermöglichen es uns, zu prüfen, ob ein bestimmtes Muster an einer bestimmten Stelle im String existiert oder nicht. Hinweis: Moderne JavaScript-Engines (ES2018+) unterstützen Lookbehind-Assertions variabler Länge, obwohl einige ältere Umgebungen möglicherweise Patterns fester Länge erfordern.

Positives Lookahead

Eine positive Lookahead-Assertion prüft das Vorhandensein eines bestimmten Musters vor der aktuellen Position im String. Sie wird durch (?=...) dargestellt. Das folgende Beispiel ist ein positives Lookahead, um das Wort „apple“ zu finden, gefolgt vom Wort „pie“:

JavaScript-Regex: Lookaround entspricht Zeichen

Output appears here after Run.

Negatives Lookahead

Eine negative Lookahead-Assertion prüft das Fehlen eines bestimmten Musters vor der aktuellen Position. Sie wird durch (?!...) dargestellt. Das folgende Beispiel ist ein negatives Lookahead, um das Wort „apple“ zu finden, das nicht vom Wort „pie“ gefolgt wird:

JavaScript-Regex: Das negative Lookahead

Output appears here after Run.

Positives Lookbehind

Eine positive Lookbehind-Assertion prüft das Vorhandensein eines bestimmten Musters hinter der aktuellen Position im String. Sie wird durch (?<=...) dargestellt. Im Folgenden finden Sie ein Codebeispiel, um das Wort „pie“ zu finden, das vom Wort „apple“ vorangestellt wird:

JavaScript-Regex: Das positive Lookbehind

Output appears here after Run.

Negatives Lookbehind

Eine negative Lookbehind-Assertion prüft das Fehlen eines bestimmten Musters hinter der aktuellen Position. Sie wird durch (?<!...) dargestellt. Hier ist ein Beispiel, um das Wort „pie“ zu finden, das nicht vom Wort „apple“ vorangestellt wird:

Lookahead und Lookbehind

Output appears here after Run.

Praktische Anwendungen von Lookahead und Lookbehind

Validierung der Passwortstärke

Die Sicherstellung starker Passwörter ist eine häufige Anforderung in Webanwendungen. Lookahead-Assertions können verwendet werden, um verschiedene Passwortbedingungen zu validieren, ohne Zeichen zu verbrauchen.


Output appears here after Run.

In diesem Beispiel haben wir ein Passwort validiert, das mindestens einen Großbuchstaben, einen Kleinbuchstaben, eine Ziffer und ein Sonderzeichen enthalten muss.

Formatieren und Analysieren von Daten

Lookahead- und Lookbehind-Assertions können beim Formatieren und Analysieren komplexer Datenstrukturen helfen. Ein gutes Beispiel ist das Einfügen von Kommas in eine Zahlenkette zur besseren Lesbarkeit:


Output appears here after Run.

Fazit

Die Beherrschung von Lookahead- und Lookbehind-Assertions in JavaScript kann Ihre Fähigkeit, Strings zu manipulieren und zu analysieren, erheblich verbessern. Diese leistungsstarken Tools bieten die Flexibilität, Muster zu prüfen, ohne Zeichen zu verbrauchen, was sie für komplexe Textverarbeitungsaufgaben unverzichtbar macht. Durch die Nutzung dieser Assertions können Entwickler effizientere und effektivere Reguläre Ausdrücke erstellen, was zu sauberem und wartungsfreundlicherem Code führt.

Praxis

Welche der folgenden Aussagen über Lookahead- und Lookbehind-Assertions in JavaScript sind korrekt?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.