JavaScript中的.match无法正常工作

时间:2016-08-30 10:22:09

标签: javascript regex

假设以下代码:

"ab00ab____ab01ab".match(/ab(.+)ab/);

我希望这会让我0001,但它会将此返回给我:

["ab00ab____ab01ab", "00ab____ab01"]

如何解决此问题?

1 个答案:

答案 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