const numberWithCommas = (x) => {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
我有这个功能,如果发送一个号码,如1223.00001
,它会像1,223.00,001
一样返回,但我想得到1,223.00001!我想得到没有逗号的小数!这question给了我不同的答案!
答案 0 :(得分:0)
你可以在你的正则表达式中添加一个正向前瞻,它断言小数点跟随。这保证了替换只发生在整数组件上。
x = "1223.00001";
x = x.replace(/\B(?=(\d{3})+(?!\d))(?=.*\.)/g, ",");
console.log(x);

一个相当强力的选择是将您当前的正则表达式应用于输入的整数侧。然后,连接用小数部分替换结果。
x = "1223.00001";
top = x.replace(/\..*$/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",");
bottom = x.replace(/^.*\./, "");
console.log(top + "." + bottom);