RegEx将两个结果单行匹配为一个

时间:2012-02-13 23:58:29

标签: javascript regex match

我有JavaScript代码

var docBodyText = document.body.innerHTML;
var patt =/<!--:.+:-->/g;
patt.compile(patt);
var matchesB=docBodyText.match(patt)

和HTML页面

<body>
<span><b><!--:?time:--> <!--:?date:--></b></span>
<br />
<!--:?url:-->
</body>

当我执行脚本时,它返回
["<!--:?time:--><!--:?date:-->","<!--:?url:-->"]

但我想要 <!--:?time:--><!--:?date:-->  单独归还。

3 个答案:

答案 0 :(得分:1)

您正在匹配greedily。默认情况下,+表示“1次或更多次,但希望尽可能多”。在?之后添加+修饰符以使其与懒惰匹配:

var patt =/<!--:.+?:-->/g;

答案 1 :(得分:0)

尝试更改模式以排除其他>标记:

var patt =/<!--:[^>]+:-->/g;

答案 2 :(得分:0)

默认情况下,Javascript正则表达式是贪婪的。您需要使用非贪婪限定符来获得与字符串匹配的短语。

var patt =/<!--:.+?:-->/g;