关于正则表达式的误解

时间:2012-11-03 09:15:37

标签: javascript regex

我有一个例子:

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

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

["834736", "6"]

它抓住最后一位数。有人可以向我解释一下吗?谢谢!

2 个答案:

答案 0 :(得分:4)

如果您只想抓住第一个数字,请将第一个数字放在组中,并匹配组外的其余数字,如下所示:

/^(\d)\d*$/

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

答案 1 :(得分:2)

您应该将+放在组内或(如果您只想要第一个数字)拆分表达式:

/^(\d)\d*$/