正则表达式跨多行捕获两个标记之间的所有内容

MxL*_*evs 1 javascript regex

我在Ruby中有这个正则表达式:http://rubular.com/r/eu9LOQxfTj

/<sometag>(.*?)<\/sometag>/im
Run Code Online (Sandbox Code Playgroud)

它成功匹配输入如下:

<sometag>
  123
  456
</sometag>
Run Code Online (Sandbox Code Playgroud)

哪会回来

123
456
Run Code Online (Sandbox Code Playgroud)

但是,当我在javascript(在chrome中测试)中尝试此操作时,它与任何内容都不匹配.javascript的多行标志是否意味着别的什么?

我想在两个给定标签之间非贪婪地捕获所有内容.如何使用正则表达式在javascript中完成此操作?这是一个Debuggex演示

<sometag>(.*?)<\/sometag>
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

这不是XML解析.

Dav*_*hta 5

.单独使用时,Javascript不支持多行表达式.你必须用[\s\S]它代替.一个满足你想要的例子:

var x = "<sometag>\n\
  123\n\
  456\n\
</sometag>";

var ans = x.match(/<sometag>([\s\S]*?)<\/sometag>/im).pop();

// ans equals " 123  456"
Run Code Online (Sandbox Code Playgroud)

请注意,您仍然需要m修改器.