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

Jim*_*mmy 17 java regex validation

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

允许使用前0,但可选

有效值

  1. 1
  2. 01
  3. 10
  4. 99
  5. 09

无效的值

  1. 0
  2. 007
  3. 100
  4. 10.5
  5. 010

到目前为止,我已经制定了以下正则表达式: ^0?([1-9][0-9])$

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

任何改进/建议?

dev*_*ity 28

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

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


Ali*_*aru 14

干得好:

^(\d?[1-9]|[1-9]0)$
Run Code Online (Sandbox Code Playgroud)

这意味着你允许任何一个

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

  • 看起来没有人倒退:) (2认同)

red*_*d-X 5

^(([0-9][1-9])|([1-9][0-9])|[1-9])$
Run Code Online (Sandbox Code Playgroud)

应该管用


Mar*_*mas 5

为什么正则表达式是一个要求?它不适合数值范围计算.

Apache commons的IntegerValidator具有以下内容:

isInRange(value, 1, 99)
Run Code Online (Sandbox Code Playgroud)

此外,如果您使用的是Spring,Struts,Wicket,Hibernate等,则您已经可以访问范围验证器.不要使用正则表达式重新发明轮子.