javascript - Javascript 正则表达式到逗号分隔最后 3 位然后 2 位
问题描述
我正在寻找一个正则表达式来分隔美国逗号格式的金额,如下所示
1111111111 to 1,11,11,11,111
我试过如下
function formatNumber(num) {
return num.toString().replace(/(\d)(?=(\d{2})*(\d{3})+(?!\d))/g, '$1,')
}
console.info(formatNumber(2665.68))
console.info(formatNumber(102665.68))
console.info(formatNumber(111102665.32))
console.info(formatNumber(11111111.32))
https://jsfiddle.net/tyLh82og/
基本上是最后三位数字,然后是开头的两位数字。
我发现许多正则表达式分隔 3 位数或 2 位数或 4 位数。
我尝试将 3 和数字分隔结合起来,但无法获得缺乏正则表达式知识。
请帮忙
谢谢
解决方案
您可以使用
.replace(/(?!^)(?=(?:\d{2})*\d{3}(?:\.|$))/g, ',')
查看正则表达式演示
细节
(?!^)
- 不是字符串位置的开始(?=(?:\d{2})*\d{3}(?:\.|$))
- 在当前位置的右边,必须有(?:\d{2})*
- 零次或多次出现两位数\d{3}
- 三位数(?:\.|$)
-.
或字符串结尾。
JavaScript 演示:
function formatNumber(num) {
return num.toString().replace(/(?!^)(?=(?:\d{2})*\d{3}(?:\.|$))/g, ',')
}
console.info(formatNumber(2665.68))
console.info(formatNumber(102665.68))
console.info(formatNumber(111102665.32))
console.info(formatNumber(11111111.32))
推荐阅读
- express - Sequelize distinct in include 在 \"DISTINCT\" 处或附近引发语法错误
- ag-grid - applyTransaction 删除不适用于 id
- loops - MS Windows Batch:使用具有可变范围和多行命令的 for 循环
- reactjs - 错误的字符转义序列
- node.js - 尝试将 apollo-angular 客户端连接到 graphql-server 时不允许使用 405 方法
- angular - 如果值为空,如何使用 Ng if 更改数据表背景颜色
- python - 如何使布局的画布与布局一起移动?
- python - Python Google 图片下载库错误
- python - 电话号码字段包含美国电话号码,需要修改为国际格式,电话号码前加“+1-”
- angular - highcharts 中的图表选项未从 ngoninit 中的函数调用更新