克服多行匹配的JavaScript 正規表示式邊界
使用JavaScript 正規表示式時,了解如何匹配跨多個行的內容變得至關重要線。考慮以下程式碼片段,嘗試提取其中包含換行符的 PRE 區塊:
<code class="js">var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\ncccddd"; var arr = ss.match(/
預期結果是捕獲整個 PRE 區塊,但結果是空警報。為了修正這個問題,我們深入研究了多行匹配的複雜性。
'.|[rn]'策略
最初的方法是將.通配符以及與任何字元或換行符相符的表達式:(.|[rn ])。然而,這被證明是無效的。
啟示:[sS]
成功的關鍵在於使用 [sS] 而不是 。用於多行匹配。此字符類包含空白字符和非空白字符,有效解決了這個問題。
<code class="js">var ss = "<pre class="brush:php;toolbar:false">aaaa\nbbb\ncccddd"; var arr = ss.match(/
/gm); alert(arr); // <pre class="brush:php;toolbar:false">...<\/pre></code>
貪婪的微妙之處:'? '與 ''
另一個考慮因素與所使用的量詞有關。雖然 似乎是顯而易見的選擇,但它引入了不必要的貪婪。 '? '或 ' ? '確保匹配找到第一個匹配項,而不是最長的匹配項。
關於 [^]
同時 [^] 也可以用作多行點,根據另一篇文章中的評論,它已被棄用。因此,最好堅持使用[sS]。
以上是如何將多行內容與 JavaScript 正規表示式配對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!