Javascript中的ReplaceAll返回了错误的号码

Javascript中的ReplaceAll返回了错误的号码,javascript,Javascript,处理我继承的一些javascript,但无法解决这个问题: fa = parseFloat(replaceAll($("#face_amount").val(),',','')) 当票面金额为9999999(或任何带单逗号的数字)fa=999999,但票面金额为1000000fa=1000时 face\u amount需要使用格式逗号进行显示 我对javascript非常陌生,因此非常感谢您提供的任何帮助。如果不知道replaceAll在做什么,我真的无法修复这行代码,但您可以尝试使用不同的替

处理我继承的一些javascript,但无法解决这个问题:

fa = parseFloat(replaceAll($("#face_amount").val(),',',''))
票面金额
为9999999(或任何带单逗号的数字)
fa
=999999,但
票面金额
为1000000
fa
=1000时

face\u amount
需要使用格式逗号进行显示


我对javascript非常陌生,因此非常感谢您提供的任何帮助。

如果不知道
replaceAll
在做什么,我真的无法修复这行代码,但您可以尝试使用不同的替换函数

fa = parseFloat($("#face_amount").val().replace(/,/g,'')) // This works, returns 1000000
我怀疑问题在于
replaceAll
函数与逗号全局不匹配。下面的代码行只找到第一个逗号,并停在那里。其中代码行使用全局正则表达式查找所有逗号

fa = parseFloat($("#face_amount").val().replace(',','')) // This doesn't work, returns 1000

如果您的目标是消除任何非数字或
值,则可以在
parseFloat
之前使用简单的正则表达式:

var floater = parseFloat($("#face_amount").val().replace(/[^\d\.]+/g, ''))

适用于我,但我在代码中包含了我的
replaceAll

函数replaceAll(str、from、to){
var re=新的RegExp(从“g”);
返回str.replace(re,to);
}
var票面金额='99999';
var fa=parseFloat(replaceAll(面值金额“,”和“);
console.log(票面金额“:”,fa);
票面金额='1000000';
fa=parseFloat(replaceAll(票面金额“,”,”);

console.log(票面金额“:”,fa)我们需要查看您的
replaceAll
功能。谢谢您的回答!我就是这样一个傻瓜,我没有意识到
replaceAll
不是一个javascript函数,而是一个自定义函数。你可以使用
\D
来匹配所有非数字字符,而不是
[^\D]
有基数的
parseInt()
parseFloat()
没有基数。@zer00ne derp!非常感谢,更新了我的答案。@Adam很高兴知道,谢谢。当然,在这个例子中我仍然需要使用
^\d
,所以我也可以将
\.
用于浮点数