我正在尝试制作一个十进制正则表达式以允许以下数字:
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等。