如下面代码:
var str = '12345678';
var reg = /(\d)(?=(\d{3})+$)/g; // (?=)正向肯定预查
var result = reg.exec(str); //["2", "2", "678", index: 1, input: "12345678", groups: undefined]
result数组的第三个元素返回第三个分组匹配的结果,但是为什么它的值是678而不是345或者345678?
如下面代码:
var str = '12345678';
var reg = /(\d)(?=(\d{3})+$)/g; // (?=)正向肯定预查
var result = reg.exec(str); //["2", "2", "678", index: 1, input: "12345678", groups: undefined]
result数组的第三个元素返回第三个分组匹配的结果,但是为什么它的值是678而不是345或者345678?
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
(\d{3})+
+
表示前面的 group 可以重复匹配多次。最终结果里的 match group 是 最后一次 匹配的结果。想要
345678
的话,可以改成((?:\d{3})+)