我想,如果我可以举例来说,如果我有多少拿到3的数块22345678我想['22','345','678'].使用以下正则表达式
/(\d{1,3})(?=(\d{3})+(?!\d))/g
Run Code Online (Sandbox Code Playgroud)
我明白了 ['22','345']
任何人都可以帮助我提高我的正则表达式?
这里有一个例子 - > https://regex101.com/r/cF6rN4/1 和这篇文章中的一个片段
console.log('22345678'.match(/(\d{1,3})(?=(\d{3})+(?!\d))/g));Run Code Online (Sandbox Code Playgroud)
匹配字符串,后面跟着长度为3的乘数或最后的数字.
console.log('22345678'.match(/\d{1,3}(?=(\d{3})+$|$)/g));Run Code Online (Sandbox Code Playgroud)

您可以避免捕获组,因为它没有必要.
/\d{1,3}(?=(?:\d{3})+$|$)/g
//---------^^^-------------
Run Code Online (Sandbox Code Playgroud)
更新:通过使用*(0或更多次重复)代替+(1或更多次重复)可以更加简化,这有助于避免管道符号.作为@torazaburo的评论都(\d{3})*$和(\d{3})+$|$是等价的.
/\d{1,3}(?=(\d{3})*$)/g
Run Code Online (Sandbox Code Playgroud)