我在Ruby中有这个正则表达式:http://rubular.com/r/eu9LOQxfTj
/<sometag>(.*?)<\/sometag>/im
它成功匹配这样的输入:
<sometag>
123
456
</sometag>
哪会返回
123
456
然而,当我在javascript(在chrome中测试)中尝试这个时,它并不匹配任何东西。 javascript的多行标志是否意味着什么呢?
我想在两个给定标签之间非贪婪地捕捉所有内容。 如何使用正则表达式在javascript中完成此操作?这是Debuggex Demo
<sometag>(.*?)<\/sometag>
这不是XML解析。
答案 0 :(得分: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"
请注意,您仍然需要m
修饰符。