【发布时间】:2012-11-03 09:15:37
【问题描述】:
我有一个例子:
var p = /^(\d)+$/;
var s = '834736';
var a = p.exec(s);
console.log(a);
我想对第一个数字^(\d)进行分组,但结果是:
["834736", "6"]
它捕获最后一个数字。谁能给我解释一下?谢谢!
【问题讨论】:
标签: javascript regex
我有一个例子:
var p = /^(\d)+$/;
var s = '834736';
var a = p.exec(s);
console.log(a);
我想对第一个数字^(\d)进行分组,但结果是:
["834736", "6"]
它捕获最后一个数字。谁能给我解释一下?谢谢!
【问题讨论】:
标签: javascript regex
如果您只想捕获第一个数字,请将第一个数字放入组中,然后匹配组外的其余数字,如下所示:
/^(\d)\d*$/
您只抓住最后一个数字的原因是,您为匹配的每个数字重复相同的组。这意味着,每次匹配一个新数字时,该组的旧内容都会被替换,因此您将获得最后一个数字作为您的组的结果。
【讨论】:
+ 放在捕获组之外,因此捕获组一次只匹配一个数字,直到它不再匹配,此时它包含最后一个数字。
您应该将+ 放在组内,或者(如果您只想要第一个数字)拆分表达式:
/^(\d)\d*$/
【讨论】: