gpt4 book ai didi

javascript - 如果操作数有小数,正则表达式可以防止逗号分隔符

转载 作者:行者123 更新时间:2023-12-02 22:45:12 25 4
gpt4 key购买 nike

我发现这个正则表达式函数为算术表达式添加千位逗号分隔符。

function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

console.log(numberWithCommas("1000")); // ok
console.log(numberWithCommas("1000.03")); // ok
console.log(numberWithCommas("1000.03+2300")); // ok
console.log(numberWithCommas("1000.03+0.2300")); // not ok

但是如果操作数有小数,我不想添加任何逗号分隔符。我应该如何相应地修改这个正则表达式?

p/s 数学运算符可以是 +、-、*、/

最佳答案

一个选项可以使用 replace使用回调函数并匹配 1+ 次零,后跟一个点和零。

如果匹配,则在替换中返回它,否则返回逗号。

\b0+\.\d+(?:\.\d+)*|\B(?=(\d{3})+(?!\d))

Regex demo

function numberWithCommas(x) {
const regex = /\b0+\.\d+(?:\.\d+)*|\B(?=(\d{3})+(?!\d))/g;
return x.toString().replace(regex, (m) => m !== "" ? m : ",");
}

console.log(numberWithCommas("1000"));
console.log(numberWithCommas("1000.03"));
console.log(numberWithCommas("1000.03+2300"));
console.log(numberWithCommas("1000.03+0.2300"));

关于javascript - 如果操作数有小数,正则表达式可以防止逗号分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58429528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com