Javascript 对正则表达式的误解
我举一个例子:Javascript 对正则表达式的误解,javascript,regex,Javascript,Regex,我举一个例子: var p = /^(\d)+$/; var s = '834736'; var a = p.exec(s); console.log(a); 我想对第一个数字^(\d)进行分组,但结果是: ["834736", "6"] 它抓住了最后一个数字。有人能向我解释吗?谢谢 您应该将+放在组内,或者(如果您只需要第一个数字)拆分表达式: /^(\d)\d*$/ 您应该将+放在组内,或者(如果您只需要第一个数字)拆分表达式: /^(\d)\d*$/ 如果只想捕捉第一个数字,请将
var p = /^(\d)+$/;
var s = '834736';
var a = p.exec(s);
console.log(a);
我想对第一个数字^(\d)
进行分组,但结果是:
["834736", "6"]
它抓住了最后一个数字。有人能向我解释吗?谢谢 您应该将
+
放在组内,或者(如果您只需要第一个数字)拆分表达式:
/^(\d)\d*$/
您应该将
+
放在组内,或者(如果您只需要第一个数字)拆分表达式:
/^(\d)\d*$/
如果只想捕捉第一个数字,请将第一个数字放入组中,并与组外的其他数字匹配,如下所示:
/^(\d)\d*$/
您只捕捉最后一个数字的原因是,您对匹配的每个数字重复同一组。这意味着,每次匹配一个新数字时,组中的旧内容都会被替换,因此您将得到最后一个数字作为组的结果。如果您只想捕获第一个数字,请将第一个数字放入组中,并与组外的其他数字相匹配,如下所示:
/^(\d)\d*$/
您只捕捉最后一个数字的原因是,您对匹配的每个数字重复同一组。这意味着,每次它匹配一个新数字时,组中的旧内容都会被替换,因此您将得到最后一个数字作为组的结果。谢谢您的回答。但是你能告诉我为什么我上面的正则表达式捕捉最后一个数字吗?@BoodCarley你把
+
放在捕捉组之外,所以捕捉组一次只匹配一个数字,直到不再匹配为止,此时它包含了最后一个数字。谢谢你的回答。但是你能告诉我为什么我上面的正则表达式捕捉最后一个数字吗?@BoodCarley你把+
放在捕捉组之外,所以捕捉组一次只匹配一个数字,直到不再匹配为止,此时它包含了最后一个数字。