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

如下面代码:

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?

阅读 2.2k
2 个回答

(\d{3})+

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题