1

我有一个例子:

var p =  /^(\d)+$/;
var s = '834736';
var a = p.exec(s);
console.log(a);

我想对第一个数字进行分组^(\d),但结果是:

["834736", "6"]

它抓住最后一个数字。谁能给我解释一下?谢谢!

4

2 回答 2

4

如果您只想捕获第一个数字,请将第一个数字放入组中,然后匹配组外的其余数字,如下所示:

/^(\d)\d*$/

你只抓住最后一个数字的原因是,你对匹配的每个数字重复相同的组。这意味着,每次匹配一个新数字时,该组的旧内容都会被替换,因此您将获得最后一个数字作为您的组的结果。

于 2012-11-03T09:17:32.560 回答
2

你应该把+里面的组或(如果你只想要第一个数字)拆分表达式:

/^(\d)\d*$/
于 2012-11-03T09:16:43.950 回答