You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何将货币字符串转换为十进制数字

嘿,我懂你遇到的问题啦——原来的正则把小数点也当成非数字给替换掉了,结果得不到想要的带小数的数字格式对吧?别着急,咱们只需要微调一下正则表达式,让它特意保留小数点就可以解决这个问题。

调整后的解决方案

核心思路是修改正则匹配规则:不再匹配所有非数字字符,而是匹配除了数字和小数点之外的所有字符。

基础版(适用于只有一个小数点的场景)

直接替换掉美元符号、逗号这些非数字且非小数点的字符:

let str = "$123,456,78.3";
let newStr = str.replace(/[^0-9.]/g, '');
console.log(newStr); // 输出:12345678.3

这里的[^0-9.]是正则里的“反向匹配”语法,意思是“匹配任何不是0-9数字,也不是小数点的字符”,刚好跳过了我们想保留的小数点。

进阶版(处理多小数点的异常情况)

如果你的业务场景里可能出现多个小数点的异常字符串(比如$123.456.78),可以再多加一步处理,确保最终结果只有一个小数点:

let str = "$123,456.78.3";
// 第一步:先清理掉所有非数字和小数点的字符
let tempStr = str.replace(/[^0-9.]/g, '');
// 第二步:只保留第一个小数点,把后面的小数点都去掉
let newStr = tempStr.replace(/(\..*)\./g, '$1');
console.log(newStr); // 输出:123456.783

这样不管是正常格式还是有点小异常的货币字符串,都能转换成符合要求的数字格式啦~

内容的提问来源于stack exchange,提问作者Derenik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 20:12:49