我需要验证一些用户输入,以确保输入的数字在1-99(含)范围内。这些必须是整数(整数)值
允许使用前0,但可选
有效值
无效的值
到目前为止,我已经制定了以下正则表达式:^0?([1-9][0-9])$
这允许在开头使用可选0,但不是100%正确,因为1
不被视为有效
任何改进/建议?
答案 0 :(得分:25)
脱离我的头顶(未经验证)
^(0?[1-9]|[1-9][0-9])$
答案 1 :(得分:14)
你走了:
^(\d?[1-9]|[1-9]0)$
意味着你允许
答案 2 :(得分:5)
为什么正则表达式是必需的?它不适合数值范围计算。
Apache commons的IntegerValidator包含以下内容:
isInRange(value, 1, 99)
此外,如果您使用的是Spring,Struts,Wicket,Hibernate等,则您已经可以访问范围验证器。不要使用正则表达式重新发明轮子。
答案 3 :(得分:4)
^(([0-9][1-9])|([1-9][0-9])|[1-9])$
应该有效
答案 4 :(得分:1)
我认为它应该像......
^(0[1-9]|[1-9][0-9])$
答案 5 :(得分:1)
还算晚,但这可以工作。
^[1-9][0-9]?$
答案 6 :(得分:0)
这个为我自己工作:
([1-9][0-9])|(0?[1-9])
检查10-99或1-9 => 1-99 允许一个前导零
答案 7 :(得分:-1)
只是做:
^([0]?[1-9]{1,2})$
范围将从0
设置为9
,{1,2}
表示最小数字= 1,最大数字= 2。
它会接受,例如:0, 00, 01, 11, 45, 99,
等......
它不会接受,例如:000, 1.2, 5,4, 3490,
等......
答案 8 :(得分:-1)
这是最简单的,我能想到:
^([1-9][0-9]?)$
仅允许1-99(包括两者)。
答案 9 :(得分:-2)
^[0-9]{1,2}$
也应该有用(它也会匹配00,希望它是一个有效的匹配)。
答案 10 :(得分:-6)
String d = "11"
if (d.length() <= 2 && d.length() >=1) {
try {
Integer i = Integer.valueOf(d);
return i <= 99 && i >= 0
}
catch (NumberFormatException e) {
return false;
}
}