js 正则实现金额分割
金额分割的实现方法
使用正则表达式可以方便地对金额进行分割,通常用于格式化显示,如每三位添加一个逗号分隔符。
基本实现
function formatMoney(money) {
return money.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
这个正则表达式的作用是匹配所有后面跟随3的倍数的数字的位置,并在这些位置插入逗号。
处理小数的情况
如果需要处理包含小数的金额,可以稍作修改:
function formatMoney(money) {
return money.toString().split('.')[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",")
+ (money.toString().split('.')[1] ? '.' + money.toString().split('.')[1] : '');
}
更完整的实现
下面是一个更完整的实现,考虑了整数和小数部分:
function formatMoney(money) {
let parts = money.toString().split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join('.');
}
处理负数和零
如果需要处理负数和零的情况:

function formatMoney(money) {
if (money === 0) return '0';
let isNegative = money < 0;
money = Math.abs(money);
let parts = money.toString().split('.');
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return (isNegative ? '-' : '') + parts.join('.');
}
使用示例
console.log(formatMoney(1234567.89)); // 输出: 1,234,567.89
console.log(formatMoney(-1234567)); // 输出: -1,234,567
console.log(formatMoney(0)); // 输出: 0
这些方法可以灵活地根据需求进行调整,适用于大多数金额格式化场景。





