我正在尝试制作一个十进制正则表达式以允许以下数字:
12.
12.23
.12
0.34
但不是:
12.@
12.2a
我尝试过的大多数正则表达式最终都没有验证.
。
我正在尝试制作一个十进制正则表达式以允许以下数字:
12.
12.23
.12
0.34
但不是:
12.@
12.2a
我尝试过的大多数正则表达式最终都没有验证.
。
正则表达式只需要检查是否有一个点前面和/或后面有 0、1 或 2 个数字。
/^\d{0,2}\.\d{0,2}$/
\.
匹配一个点并\d{0,2}
匹配 0 到 2 个数字。
最后,在 和\d{0,2}\.\d{0,2}
之间进行包装^
,$
以确保将检查的值仅包含格式类似的数字。
在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
这个如何 :/^(\d*|\d*\.\d{1,2}|\d+\.\d{0,2})$/
这应该有效:
/^\d+(?:\.\d*)|\d*(?:\.\d+)$/
它匹配:
12.
12.23
.12
0.34
这似乎有效:
/^[\.?\d]+$/
尝试以下操作:
^(?:\d+(?:\.\d*)?|\.\d+)$
表达式的第一部分(?:\d+(?:\.\d*)?
匹配一个或多个数字\d+
,后跟一个文字点和零个或多个数字的可选组合(?:\.\d*)
。
第二部分\.\d+
匹配一个文字点.
,后跟一个或多个数字,这是匹配数字所必需的,如.34
,.3
等。