刚才在看正则表达式的子表达式,在exec方法里如果有子表达式的话,也会返回符合自表达式的字符串。
我写了两个例子
/(\d0)+/.exec("10000000");
//["10000000", "00", index: 0, input: "10000000"]
第一个输出应该是符合整个正则表达式的字符串,为什么不是"10"?
第二个书输出应该是符合子表达式(\d0)的字符串,因为是输出最后一个符合的,所以是"00"
第二个例子
/(\d0)/.exec("10000000");
["10", "10", index: 0, input: "10000000"]
第一个输出"10"我可以理解,
第二个不是应该是最后一个符合的字符串"00"么,为什么也是"10"?
因为是刚刚开始看,而且看的英文版,所以有理解错误请大家指正。
第一种情况
/(\d0)+/.exec("10000000");
中的+
量词是匹配优先的,即,\d0
匹配10
后不会马上停下来,继续匹配到最长的情况。所以第一种情况的第一个元素是
10000000
.