Javascript 改进正则表达式以匹配 3 的数字 block

标签 javascript regex

如果我有数字 22345678 我想得到一个 3 的数字 block ,我想得到 ['22','345','678'] 。使用以下正则表达式

/(\d{1,3})(?=(\d{3})+(?!\d))/g

我得到 ['22','345']

谁能帮我改进我的正则表达式?

这里有一个例子 --> https://regex101.com/r/cF6rN4/1 以及这篇文章中的一个片段

console.log('22345678'.match(/(\d{1,3})(?=(\d{3})+(?!\d))/g));

最佳答案

匹配后跟长度为 3 的乘数或末尾的数字的字符串。

console.log('22345678'.match(/\d{1,3}(?=(\d{3})+$|$)/g));

Regex explanation here.

Regular expression visualization


您可以避免捕获组,因为它不是必需的。

/\d{1,3}(?=(?:\d{3})+$|$)/g
//---------^^^-------------

更新: 使用 *(0 或更多重复)代替 + 可以简化得多>(1 或更多重复) 这有助于避免管道符号。作为 @torazaburo 的评论 (\d{3})*$(\d{3})+$ |$ 是等价的。

/\d{1,3}(?=(\d{3})*$)/g

关于Javascript 改进正则表达式以匹配 3 的数字 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38794600/

相关文章:

javascript - 我的 HTML 按钮将我重定向到这个奇怪的 "Index of C:\"内容。我如何解决它?

javascript - 有什么办法可以让这个脚本在 texstudio 中工作吗?

regex - 为什么 New-AzureRmVM 给出实体名称错误?

Javascript:XPathEvaluator() 未定义

javascript -/x|y|z/的含义

javascript - 将数据传递给另一个组件

javascript - 插件 Jquery Validation 的错误信息没有正确显示

regex - PowerShell 3 正则表达式 - 为什么不区分大小写不起作用?

Java,正则表达式,去除不需要的字符[尾随、前导、之间]

c# - 通过关注正则表达式中定义的边界情况,从正则表达式生成示例数据以验证输入字符串