javascript - 替换为最小/最大十进制长度的正则表达式

标签 javascript regex replace

我在这个论坛上找到了以下正则表达式,可以将任何数字替换为尽可能小的十进制长度:

number.toFixed(maxDecimal).replace(/\.?0+$/, '');

它工作得很好,除了一种情况:当 number 等于 49.9999999 时,当我将 maxDecimal 设置为 0 时,它返回 5 而不是 50。我对正则表达式有点迷失,如果你想出一个建议。

最佳答案

只需删除问号,因为这会使50减少为5,因为正则表达式表示出现0或1次小数点,后跟1 个或多个 0。您不希望这样,因为 50 中的 0 会匹配 0+ 部分,因为小数点是可选的。使用此正则表达式可确保仅适当替换小数部分。

>47.79955965.toFixed(5).replace(/(\.0+){0,1}$/, '');
"47.79956"
>number=49.9999999
49.9999999
> number.toFixed(5).replace(/(\.0+){0,1}$/, '');
"50"
> number.toFixed(0).replace(/(\.0+)?$/, '');
"50"

关于javascript - 替换为最小/最大十进制长度的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834163/

相关文章:

javascript - 正则表达式与 "1 1"JavaScript 中的数字不匹配

string - 如何在一个回显中大写和替换shell脚本中的字符

regex - Sublime Text xml替换正则表达式结果

javascript - 无法更改Bootbox中确认框的按钮颜色

javascript - 在 AngularJS 中保持不同 Controller 中的变量同步

javascript - 两个或多个点的正则表达式

javascript - Node.js:逐行替换文本文件中模式的第二部分

python - 使用 findall python 从推文中提取@mentions(给出不正确的结果)

javascript - 是否可以/推荐发送包含 Javascript 的 HTML 电子邮件?

vim - 如何在Vim中搜索显示为“<85>”的字符