我正在尝试输入大于0
且小于100
的值,我正在使用以下正则表达式:
/^(0+)?(99(\.99?)?|(\.99?)?|\.[0-9]+|0?[0-9](\.[0-9]{0,2})?|(0+)?[0-9][0-9](\.[0-9][0-9]?)?)$/
这个正则表达式不会抱怨零,但0.01是一个有效值。
基本上,我试图以00.00
格式获取值,并且也可以使用0.01, 00.01, ... 99.99
之类的值,但仅限数字和点。
我正在使用javascript和html
答案 0 :(得分:4)
答案 1 :(得分:3)
那么为什么你必须用复杂的正则表达式来打败自己。为什么不进行数字比较?
function validNum (num) {
num = parserFloat(num);
return num > 0 && num < 100;
}
只想要两位小数?
function validNum (num) {
num = parseFloat((num + "").replace(/^(.*\.\d\d)\d*$/, '$1'));
return num > 0 && num < 100;
}
.5: true
..5 : false
.005 : false
0.05 : true
99.99 : true
00.01 : true
00.00 : false
0.00 : false
00.0 : false
100.00 : false
答案 2 :(得分:1)
我认为你不想允许0.00
或00.00
^(?!00?\.00$)\d{1,2}(?:\.\d{2})?$
OR
^(?!00?\.00$)\d{1,2}(?:\.\d{1,2})?$
开始时的否定前瞻(?!00?\.00$)
断言匹配的数字不会是00.00
或0.00