克服多行匹配的 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中文网其他相关文章!