Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kann man mehrzeiligen Inhalt mit regulären JavaScript-Ausdrücken abgleichen?

Patricia Arquette
Freigeben: 2024-10-28 20:02:02
Original
319 Leute haben es durchsucht

How to Match Multiline Content with JavaScript Regular Expressions?

JavaScript-Regex-Grenzen für mehrzeilige Übereinstimmungen überwinden

Bei der Arbeit mit regulären JavaScript-Ausdrücken ist es wichtig zu verstehen, wie Inhalte abgeglichen werden, die mehrere Zeilen umfassen Linien. Betrachten Sie den folgenden Codeausschnitt, der versucht, einen PRE-Block mit darin enthaltenen Zeilenumbrüchen zu extrahieren:

<code class="js">var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\nccc
ddd"; var arr = ss.match(//gm); alert(arr); // null</code>
Nach dem Login kopieren

Das erwartete Ergebnis besteht darin, den gesamten PRE-Block zu erfassen, aber das Ergebnis ist eine Nullwarnung. Um dies zu beheben, befassen wir uns mit den Feinheiten des Multiline-Matchings.

Das „.|[rn]“-Gambit

Ein erster Ansatz besteht darin, das zu ersetzen. Platzhalterzeichen mit einem Ausdruck, der mit einem beliebigen Zeichen oder Zeilenumbruch übereinstimmt: (.|[rn]). Dies erweist sich jedoch als unwirksam.

Die Offenbarung: [sS]

Der Schlüssel zum Erfolg liegt in der Verwendung von [sS] anstelle von . für mehrzeiliges Matching. Diese Zeichenklasse umfasst sowohl Leerzeichen als auch Nicht-Leerzeichen und löst das Problem effektiv.

<code class="js">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">...<\/pre></code>
Nach dem Login kopieren

Die Feinheiten der Gier: '?' vs. ''

Eine weitere Überlegung betrifft den verwendeten Quantor. Auch wenn wie die offensichtliche Wahl erscheint, führt es zu unnötiger Gier. '?' oder ' ?' stellt sicher, dass die Übereinstimmung das erste Vorkommen findet und nicht das längste mögliche.

Ein Hinweis zu [^]

Während [^] auch als mehrzeiliger Punkt dienen kann , es ist gemäß einem Kommentar in einem anderen Beitrag veraltet. Daher ist es besser, bei [sS] zu bleiben.

Das obige ist der detaillierte Inhalt vonWie kann man mehrzeiligen Inhalt mit regulären JavaScript-Ausdrücken abgleichen?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!