javascript - 如果操作数有小数,正则表达式可防止逗号分隔符
问题描述
我发现了这个正则表达式函数,它为算术表达式添加了千位逗号分隔符。
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 数学运算符可以是 +,-,*,/
解决方案
一种选择是使用带有回调函数的替换并匹配 1+ 次零,然后是点和零。
如果匹配,则在替换中返回,否则返回逗号。
\b0+\.\d+(?:\.\d+)*|\B(?=(\d{3})+(?!\d))
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"));
推荐阅读
- caching - 何时使用 Redis(内存数据库)与何时使用缓存?
- vba - 更改行源后未显示组合框默认值
- visual-studio-code - 如何在 vscode 中保留/记住源代码控制排序顺序
- python - Pyglet:我如何只在需要时调用draw?
- javascript - 无法让我的 jquery 锚在桌面上工作
- android - 如何将 Android UiSelector 与 Appium 链接用于父元素的子元素
- javascript - 新数据提交后在 React 中使用钩子映射数据
- sqlite - 滥用聚合:group_concat()
- r - 如何一次绘制数据集R中特定列的多个直方图
- python - 用户在 django 中拥有数据