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

Javascript 替换为最小/最大十进制长度的正则表达式,javascript,regex,replace,Javascript,Regex,Replace,在这个论坛上,我发现以下正则表达式可以将任何数字替换为最小的十进制长度: number.toFixed(maxDecimal)。替换(/\.?0+$/,“”) 它工作得非常好,除了一种情况:当数字等于49.9999999时,当我将maxDecimal设置为0时,它返回5而不是50。我对正则表达式有点迷茫,如果你能提出一个建议,我将不胜感激。只要去掉问号?,因为这会使50减少到5,因为正则表达式表示小数点出现0或1次,后跟1或更多0。您不希望这样,因为50分之0将匹配0+部分,因为小数点是可选的。

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

number.toFixed(maxDecimal)。替换(/\.?0+$/,“”)


它工作得非常好,除了一种情况:当数字等于49.9999999时,当我将maxDecimal设置为0时,它返回5而不是50。我对正则表达式有点迷茫,如果你能提出一个建议,我将不胜感激。

只要去掉问号
,因为这会使
50
减少到
5
,因为正则表达式表示小数点出现0或1次,后跟1或更多
0
。您不希望这样,因为50分之0将匹配0+部分,因为小数点是可选的。使用此正则表达式this以确保只适当地替换小数部分

>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"

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

>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"

如果不做所有这些,
~~数字
对你有用吗?如果不做所有这些,
~~数字
对你有用吗?
/(\.0+)?$/
也有用,而且稍微短一点:-)@AJNeufeld hehe是的,我想我的心思在别的地方:P
/(\.0+)$/
也有用,稍微短一点:-)@AJNeufeld hehe是的,我想我的脑子在别的地方:P