Javascript Multiline正则表达式

时间:2013-12-06 18:44:55

标签: javascript regex

我希望将内容开头与标记匹配,并以标记

结束

我使用了match(/\<block\>(.*)\<\/block>/g);

但它仅适用于一行<block>Data</block>

不适合他人

 <block>Data 
   can be here 
   </block>

请提出任何建议

2 个答案:

答案 0 :(得分:3)

Javascript在其正则表达式引擎中没有DOTALL标志。

但Javascript使点匹配换行的方法是:

string.match(/<block>([\s\S]*?)<\/block>/ig);

[\s\S]代替.匹配任何字符,包括换行符。

答案 1 :(得分:1)

您必须将.替换为[\s\S],因为该点与换行符不匹配。

/<block>([\s\S]*?)<\/block>/g

如果没有嵌套其他标签,则可以使用[^<]*

/<block>([^<]*)<\/block>/g

但是像这样的代码:

<block> abcd
    <block>efgh</block>
</block>

将以第一个模式失败,并且您无法使用javascript正则表达式解决问题。