假设以下代码:
"ab00ab____ab01ab".match(/ab(.+)ab/);
我希望这会让我00
和01
,但它会将此返回给我:
["ab00ab____ab01ab", "00ab____ab01"]
如何解决此问题?
答案 0 :(得分:1)
在RegExp#exec
正则表达式
/ab(.+?)ab/g
var s = "ab00ab____ab01ab";
var re = /ab(.+?)ab/g;
var res = [];
while ((m=re.exec(s)) !== null) {
res.push(m[1]);
}
console.log(res);
首先,您需要一个懒点匹配模式(.*?
或.+?
)来匹配第一个ab
,而不是贪婪的.+
)匹配到最后ab
。此外,对于String#match
和带有全局修饰符的正则表达式,您将丢失所有捕获(与带括号的正则表达式模式部分匹配的子字符串),您只能使用RegExp#exec
。