我有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:-->
单独归还。
答案 0 :(得分:1)
您正在匹配greedily。默认情况下,+
表示“1次或更多次,但希望尽可能多”。在?
之后添加+
修饰符以使其与懒惰匹配:
var patt =/<!--:.+?:-->/g;
答案 1 :(得分:0)
尝试更改模式以排除其他>
标记:
var patt =/<!--:[^>]+:-->/g;
答案 2 :(得分:0)
默认情况下,Javascript正则表达式是贪婪的。您需要使用非贪婪限定符来获得与字符串匹配的短语。
var patt =/<!--:.+?:-->/g;