-1

我正在尝试制作一个十进制正则表达式以允许以下数字:

12.

12.23

.12

0.34

但不是:

12.@

12.2a

我尝试过的大多数正则表达式最终都没有验证.

4

6 回答 6

0

正则表达式只需要检查是否有一个点前面和/或后面有 0、1 或 2 个数字。

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

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

最后,在 和\d{0,2}\.\d{0,2}之间进行包装^$以确保将检查的值仅包含格式类似的数字。

于 2013-10-16T12:18:30.273 回答
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
于 2013-10-16T12:32:48.577 回答
0

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

于 2013-10-16T12:40:41.190 回答
0

这应该有效:

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

它匹配:

12.

12.23

.12

0.34
于 2013-10-16T12:41:34.210 回答
0

这似乎有效:

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

于 2013-10-16T13:00:37.883 回答
-1

尝试以下操作:

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

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

第二部分\.\d+匹配一个文字点.,后跟一个或多个数字,这是匹配数字所必需的,如.34,.3等。

正则表达式 101 演示

于 2013-10-16T12:09:54.837 回答