Heim >Web-Frontend >js-Tutorial >Wie gehe ich mit dem mehrzeiligen Regex-Matching in JavaScript um?

Wie gehe ich mit dem mehrzeiligen Regex-Matching in JavaScript um?

Linda Hamilton
Linda HamiltonOriginal
2024-10-28 20:48:02919Durchsuche

 How to Handle Multi-Line Regex Matching in JavaScript?

Mehrzeiliger Regex-Abgleich mit JavaScript

Beim Abgleich von Zeichenfolgen, die sich über mehrere Zeilen erstrecken, ist das /m-Flag von JavaScript bekanntermaßen unzureichend. Um diese Einschränkung zu beheben, ist ein robusterer Ansatz erforderlich.

Die Lösung

Die Lösung besteht darin, die Standardeinstellung zu ersetzen. (Punkt-)Muster, das jedem einzelnen Zeichen entspricht, stattdessen mit [sS]. Hier ist ein Beispiel:

var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
ddd"; var arr = ss.match(//gm); alert(arr); // "<pre class="brush:php;toolbar:false">... "

Diese Regex verwendet das Metazeichen [sS], das mit jedem Zeichen übereinstimmt, einschließlich Leerzeichen und Zeilenumbrüchen. Dadurch kann die Regex Zeichenfolgen unabhängig von ihren Zeilenumbrüchen zuordnen.

Alternativen und Leistungsüberlegungen

Während [sS] eine zuverlässige Lösung ist, gibt es alternative Ansätze :

  • [^]` (veraltet): Entspricht jedem Zeichen außer einem Zeilenumbruch.
  • (.|r|n) und (.| [rn]): Diese beiden Muster können auch mit mehrzeiligen Zeichenfolgen übereinstimmen, sind jedoch laut Benchmarks deutlich langsamer.

Best Practices

Zur Optimierung der Leistung und Vermeiden Sie unnötige Gier und beachten Sie die folgenden Best Practices:

  • Verwenden Sie *? oder ? Quantoren anstelle von * oder um die Übereinstimmung auf das erforderliche Minimum zu beschränken.
  • Vermeiden Sie die Verwendung von Possessivquantoren wie oder *.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit dem mehrzeiligen Regex-Matching in JavaScript um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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