Heim > Web-Frontend > js-Tutorial > Warum kann JavaScript Regex keinen mehrzeiligen Text mit der Flagge „m' extrahieren?

Warum kann JavaScript Regex keinen mehrzeiligen Text mit der Flagge „m' extrahieren?

Mary-Kate Olsen
Freigeben: 2024-11-10 01:36:02
Original
1025 Leute haben es durchsucht

Why Does JavaScript Regex Fail to Extract Multiline Text with the 'm' Flag?

Regex-Dilemma: Mehrzeilige Textextraktion

Bei dem Versuch, Text aus HTML mithilfe von JavaScript-Regex zu extrahieren, stieß ein Entwickler auf ein unerwartetes Hindernis: das Das Multiline-Flag (m) schien beim Erfassen von mehrzeiligem Text unwirksam zu sein.

Das bereitgestellte Regex-Muster zielte darauf ab, den in einem h1-Tag eingeschlossenen Text zu extrahieren:

var pattern = /<div>
Nach dem Login kopieren

Allerdings, wenn die HTML-Zeichenfolge Zeilenumbrüche enthielt (n), das Ergebnis blieb durchweg leer. Durch das Entfernen der Zeilenumbrüche wurde das Problem behoben, unabhängig davon, ob das m-Flag vorhanden war.

Die Lösung: Dotall-Modifikator

Der Schuldige lag im Fehlen eines Dotall-Modifikators JavaScript. Standardmäßig entspricht der Punkt (.) jedem Zeichen außer Newline. Um diese Einschränkung zu überwinden, kann eine Problemumgehung mit Zeichenklassen und deren Negation angewendet werden:

[\s\S]
Nach dem Login kopieren

Diese Zeichenklasse entspricht jedem Zeichen, einschließlich Zeilenumbrüchen und anderen Leerzeichen. Eingebunden in den regulären Ausdruck ergibt es:

/<div>
Nach dem Login kopieren
Nach dem Login kopieren

Moderne Lösung mit DotAll-Flag

Ab ES2018 unterstützt JavaScript das s (dotAll)-Flag. Dieses Flag weist die Regex-Engine explizit an, zuzulassen, dass der Punkt mit Zeilenumbrüchen übereinstimmt, sodass keine Problemumgehungen erforderlich sind:

/<div>
Nach dem Login kopieren
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum kann JavaScript Regex keinen mehrzeiligen Text mit der Flagge „m' extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage