4

这是代码

var str = 'a girl is reading a book!';
var reg =  /\w*(?=ing\b)/g;
var res = str.match(reg);
console.log(res);

结果是 ["read",""] 在 chrome 中。

我想问为什么结果中有“”。

4

2 回答 2

7

这是预期的行为

Firstread被捕获,因为它后面跟着ing.Hereing仅匹配..它从不包含在结果中。

现在我们在readie 之后的位置,我们将在i..here 再次ing匹配(由于\w*),它给出了一个空结果,因为read 和 ing之间没有任何内容。

您可以使用\w+(?=ing\b)来避免空结果

于 2013-01-31T10:22:57.387 回答
2

/\w*(?=ing\b)/g
在这里,您正在使用*这意味着没有或更多,因此它会在读取部分后"read"ing捕获两者。使用 + 表示一个或多个。""ingread

于 2013-01-31T10:26:16.000 回答