正则表达式两位小数。最后有效

时间:2013-10-16 12:04:35

标签: javascript regex

我正在尝试使用十进制正则表达式来允许数字:

12.

12.23

.12

0.34

但不是:

12.@

12.2a

我尝试的大部分正则表达式都没有在结尾验证.

6 个答案:

答案 0 :(得分:0)

正则表达式只需检查前面有一个点和/或后面跟着0,1或2个数字。

/^\d{0,2}\.\d{0,2}$/

\.匹配一个点,\d{0,2}匹配0到2位数。

最后,\d{0,2}\.\d{0,2}包含在^$之间,以确保要检查的值只包含一个格式化的数字。

答案 1 :(得分:0)

MDN

上找到了这个
var filterFloat = function (value)
    {
    if(/^\-?([0-9]+(\.[0-9]+)?|Infinity)$/
        .test(value))
        return Number(value);
    return NaN;
    }
console.log(filterFloat('421'));
// 421
console.log(filterFloat('-421'));
// -421
console.log(filterFloat('Infinity'));
// Infinity
console.log(filterFloat('1.61803398875'));
// 1.61803398875
console.log(filterFloat('421e+0'));
// NaN
console.log(filterFloat('421hop'));
// NaN
console.log(filterFloat('hop1.61803398875'));
// NaN

答案 2 :(得分:0)

这个怎么样:/^(\d*|\d*\.\d{1,2}|\d+\.\d{0,2})$/

答案 3 :(得分:0)

这应该有效:

/^\d+(?:\.\d*)|\d*(?:\.\d+)$/

匹配:

12.

12.23

.12

0.34

答案 4 :(得分:0)

这似乎有效:

/^[\.?\d]+$/

答案 5 :(得分:-1)

尝试以下方法:

^(?:\d+(?:\.\d*)?|\.\d+)$

表达式(?:\d+(?:\.\d*)?的第一部分与一个或多个数字\d+匹配,后跟可选的字面点和零个或多个数字(?:\.\d*)的组合。

第二部分\.\d+匹配文字点.后跟一个或多个数字,需要匹配.34.3等数字。< / p>

Regex101 Demo