js数字转货币格式,别再手写正则了,两行代码搞定
js数字转货币格式,别再手写正则了,两行代码搞定
做电商后台三年,处理过上百个金额展示需求。数字转货币这件事看着简单,坑却不少。今天把踩过的坑和最终方案捋一捋。
最省事的写法是 toLocaleString。1234567.89.toLocaleString('en-US') 直接输出 1,234,567.89。问题是它默认保留两位小数js数字转货币格式,别再手写正则了,两行代码搞定,遇到 100 就变 100.00,做整数展示特别难受。我在订单列表里被坑过,后面统一加了判断。

我最终用的还是正则,把数字字符串从右往左每三位插逗号:str.replace(/\B(?=(\d{3})+$)/g, ',')。注意是对字符串操作,得先把数字转字符串。小数部分要单独切出来处理,不能整串一起 replace,否则小数点位置会乱。
负数和零要单独写分支数字转货币 js,直接套正数逻辑会出 - ,123 这种怪结果。一般先判 num === 0 直接返回,负数取绝对值处理完再拼回负号。另外带空格或货币符号的输入得先清洗,不然正则匹配直接错位。
做金额输入框时我配合 input 事件实时加逗号,但提交前得去掉,用 replace(/,/g, '') 还原纯数字再发请求,没做这步后端一收参数就报 422。你们项目里金额格式化一般怎么处理的?