一个js正则表达式exec的问题

foliage
  • 22

如下面代码:

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?

评论
阅读 475
2 个回答
✓ 已被采纳

(\d{3})+

+ 表示前面的 group 可以重复匹配多次。最终结果里的 match group 是 最后一次 匹配的结果。

想要 345678 的话,可以改成 ((?:\d{3})+)

你都{3}限制3位了,肯定就只有3位啊

撰写回答

登录后参与交流、获取后续更新提醒

宣传栏