W3docs

JavaScript Regex m-Flag (Mehrzeilig)

Das m-Flag in JavaScript-Regulärausdrücken lässt ^ und $ den Anfang und das Ende jeder Zeile in einem mehrzeiligen String abgleichen, nicht nur den

Einführung in den mehrzeiligen Modus

Das m-Flag in JavaScript-Regulärausdrücken ermöglicht es den Ankern ^ und $, den Anfang und das Ende jeder Zeile innerhalb eines mehrzeiligen Strings abzugleichen, anstatt nur den Anfang und das Ende des gesamten Strings. Dies ist besonders nützlich beim Arbeiten mit mehrzeiligem Text, bei dem Sie zeilenweise Mustererkennung benötigen.

Diese Seite behandelt, was das m-Flag verändert, wie es sich vom Standardverhalten der Anker unterscheidet, wie es mit den Flags g und i kombiniert werden kann, sowie praktische Muster für das Parsen zeilenorientierter Texte wie Protokolldateien.

Standardverhalten vs. mehrzeiliger Modus

Standardmäßig (ohne m) stimmt ^ nur am absoluten Anfang des gesamten Strings überein und $ nur am absoluten Ende. Ein Zeilenumbruch (\n) innerhalb des Strings ist lediglich ein gewöhnliches Zeichen – er erzeugt keine neuen Ankerpositionen.

Mit dem m-Flag stimmt ^ auch an der Position direkt nach jedem \n überein, und $ stimmt auch an der Position direkt vor jedem \n überein (sowie am tatsächlichen Anfang und Ende des Strings). Das Treffer selbst enthält niemals das Zeilenumbruchzeichen – die Anker sind Positionen ohne Breite.

javascript— editable

Ohne m wird nur das abc am Anfang des Strings durch ^ verankert. Das Hinzufügen von m ermöglicht es ^, auch nach dem Zeilenumbruch zu passen, sodass beide abc-Zeilen gefunden werden. (Das g-Flag sammelt alle Treffer, anstatt beim ersten aufzuhören.)

Das m-Flag: Aktivierung des mehrzeiligen Modus

Wenn Sie das m-Flag verwenden, stimmen die Anker ^ und $ an den Positionen vor und nach Zeilenumbrüchen innerhalb des Strings überein.

Verwendung des m-Flags

javascript— editable

In diesem Beispiel stimmt der Regulärausdruck ^abc dank des m-Flags mit dem Anfang jeder Zeile überein, die mit "abc" beginnt. Das g-Flag stellt sicher, dass alle Vorkommen gefunden werden. Ohne das m-Flag würde nur "abc" am absoluten Anfang des Strings gefunden.

Beispiel: Mehrere Zeilen abgleichen

javascript— editable

Hier findet der Regulärausdruck ^start dank der Kombination aus m- und g-Flag den Anfang von Zeilen, die mit "start" beginnen.

Praktische Anwendungen

Zeilen in mehrzeiligem Text abgleichen

Das m-Flag ist besonders nützlich, um bestimmte Muster am Anfang oder Ende jeder Zeile in einem mehrzeiligen String zu erkennen.

javascript— editable

Dieses Beispiel zeigt, wie ^hello mit dem m-Flag "hello" am Anfang jeder Zeile erkennt.

Zeilenenden in mehrzeiligem Text abgleichen

Ebenso können Sie das m-Flag verwenden, um Muster am Ende jeder Zeile abzugleichen.

javascript— editable

Hier erkennt world$ mit dem m-Flag "world" am Ende jeder Zeile.

Beispiel: Bestimmte Zeilen extrahieren

javascript— editable

Dieses Beispiel zeigt, wie alle Zeilen, die mit "Error:" beginnen, mithilfe des m-Flags aus einer Protokolldatei extrahiert werden.

Flags kombinieren

Sie können das m-Flag mit anderen Flags kombinieren, um Ihre Regulärausdrücke zu erweitern. Die Kombination des m-Flags mit dem Groß-/Kleinschreibung ignorierenden i-Flag ermöglicht beispielsweise die Groß-/Kleinschreibung ignorierende mehrzeilige Suche.

Beispiel: Groß-/Kleinschreibung ignorierender mehrzeiliger Abgleich

javascript— editable

In diesem Beispiel findet der Regulärausdruck Zeilen, die "hello" enthalten, unabhängig von der Groß-/Kleinschreibung, dank der Kombination aus m- und i-Flag.

  • Das Muster ^.*hello.*$ stimmt mit jeder Zeile überein, die "hello" enthält, unabhängig von der Groß-/Kleinschreibung.
  • Das m-Flag stellt sicher, dass jede Zeile im mehrzeiligen String einzeln behandelt wird.
  • Hello world, hello world und HELLO WORLD stimmen alle mit dem Muster überein, da sie (ohne Berücksichtigung der Groß-/Kleinschreibung) "hello" enthalten.
Info

Verwenden Sie das m-Flag in JavaScript-Regulärausdrücken, um die Anker ^ und $ auf jede Zeile in einem mehrzeiligen String anzuwenden und so die Validierung und Bearbeitung zeilenweiser Inhalte zu verbessern.

Das m-Flag zur zeilenweisen Validierung verwenden

Das m-Flag ist ideal für Szenarien, in denen Sie jede Zeile einzeln innerhalb eines mehrzeiligen Strings validieren oder bearbeiten müssen.

Beispiel: Validierung einer US-amerikanischen Telefonnummer

javascript— editable

Dieser Regulärausdruck stellt sicher, dass die Telefonnummer im Format (123) 456-7890 vorliegt. Er verwendet ^ zur Prüfung des Anfangs und $ zur Prüfung des Endes, um sicherzustellen, dass der gesamte String dem angegebenen Muster für jede Zeile entspricht.

Sowohl "(123) 456-7890" als auch "(234) 567-8901" stimmen mit dem Regulärausdruck überein, da sie dem Format (xxx) xxx-xxxx folgen, auf das der Ausdruck ausgelegt ist.

Häufige Fallstricke

  • m betrifft nur ^ und $, nicht . — Der Punkt stimmt weiterhin nicht mit Zeilenumbrüchen überein. Wenn Sie möchten, dass . auch Zeilenumbrüche überschreitet, verwenden Sie das separate s-Flag (dotAll). Das m-Flag ändert, wo Zeilen beginnen und enden; das s-Flag ändert, was . abgleicht.
  • m ist nicht dasselbe wie der Abgleich ganzer Wörter. Um an den Grenzen eines Wortes statt einer Zeile abzugleichen, verwenden Sie die \b-Wortgrenze anstelle von ^/$.
  • Ohne g gibt match() nur den ersten Treffer zurück. Das m-Flag aktiviert zusätzliche Ankerpositionen, aber Sie benötigen dennoch g, um jede Zeile zu erfassen. Kombinieren Sie sie als gm.
javascript— editable

Fazit

Das m-Flag in JavaScript-Regulärausdrücken erweitert die Funktionalität der Anker ^ und $, sodass sie den Anfang und das Ende jeder Zeile in einem mehrzeiligen String erkennen. Diese Fähigkeit ist unverzichtbar für die Verarbeitung mehrzeiliger Textdaten und ermöglicht präzise zeilenweise Mustererkennung und Validierung.

Übung

Übung
Was ist die Funktion des 'm'-Flags in JavaScript-Regulärausdrücken?
Was ist die Funktion des 'm'-Flags in JavaScript-Regulärausdrücken?
Was this page helpful?