如何删除多余的小数点?

时间:2011-11-15 16:26:47

标签: javascript regex

我需要更改用户输入并在框中仅保留整数或十进制值,即4567或354.5635。我使用以下声明:

v = v.replace(/[^\d\.]+/g, "");

但是这允许多个小数点,例如345.45.345.67。我如何确保只有一个点?

5 个答案:

答案 0 :(得分:4)

v = parseFloat(v).toFixed(numberOfDecimalDigits);

答案 1 :(得分:2)

不确定JS是否可以做前瞻断言,但是如果可以的话可以使用正则表达式,那么JS也可以做反向(input_string)。

需要反向,因为你想要允许FIRST点,然后取出其余部分 但是,搜索从左到右进行。

/(?:[.](?=.*[.])|[^\d.])+/g将取出除了最后一个'。'之外的所有内容 因此,字符串必须被反转,替换,然后再次反转。

Perl代码示例:

my $ss = 'asdf45.980.765';
$ss = reverse $ss;
$ss =~ s/(?:[.](?=.*[.])|[^\d.])+//g;
$ss = reverse $ss;
print $ss;

输出:45.980765

答案 2 :(得分:0)

我建议在这里使用parseFloat

v = parseFloat(v);

这将保证您具有整数/小数值或NaN

答案 3 :(得分:0)

v = v.replace(/[A-Za-z$-]/g, ""); 
     // This will replace the alphabets

v = v.replace(/[^\d]*(\d+(\.\d+)?)?.*/g, "$1"); 
    // This will replace other then decimal

答案 4 :(得分:-2)

v = v.replace(/[^\d]*(\d+(\.\d+)?)?.*/g, "$1");