我正在尝试使用十进制正则表达式来允许数字:
12.
12.23
.12
0.34
但不是:
12.@
12.2a
我尝试的大部分正则表达式都没有在结尾验证.
。
答案 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>