Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对正则表达式的误解_Javascript_Regex - Fatal编程技术网

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你把
+
放在捕捉组之外,所以捕捉组一次只匹配一个数字,直到不再匹配为止,此时它包含了最后一个数字。