如何使用正则表达式验证1-99的范围?

时间:2010-10-25 08:40:35

标签: java regex validation

我需要验证一些用户输入,以确保输入的数字在1-99(含)范围内。这些必须是整数(整数)值

允许使用前0,但可选

有效值

  1. 1
  2. 01
  3. 10
  4. 99
  5. 09
  6. 无效的值

    1. 0
    2. 007
    3. 100
    4. 10.5
    5. 010
    6. 到目前为止,我已经制定了以下正则表达式:^0?([1-9][0-9])$

      这允许在开头使用可选0,但不是100%正确,因为1不被视为有效

      任何改进/建议?

11 个答案:

答案 0 :(得分:25)

脱离我的头顶(未经验证)

^(0?[1-9]|[1-9][0-9])$

答案 1 :(得分:14)

你走了:

^(\d?[1-9]|[1-9]0)$

意味着你允许

  1. 1至9或01至09,11至19,21至29,......,91至99
  2. 10,20,...,90

答案 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;
    }
}