使用正则表达式验证数字范围

38

我的输入数字是int类型的。但输入数字必须在-2055到2055的范围内,并且我想通过使用正则表达式来检查这一点。

所以有没有办法编写正则表达式来检查数字是否在(-2055, 2055)范围内?

使用if语句检查数字是否在范围内更容易。但我正在编写解释器,所以应该使用正则表达式检查输入数字。


7
为什么要使用正则表达式?使用 <> 运算符不是更容易吗? - ProgramFOX
5
目前所有的正则表达式解决方案都是不完整/错误的。这可能会让你明白为什么正则表达式不是做这项工作的正确工具,特别是如果你后来需要更改范围... - Tim Pietzcker
1
我正在使用OCaml编写一个解释器……如何在不使用正则表达式的情况下验证输入数字是否在范围内? - Trung Nguyen
@aliteralmind:你的愚蠢版本是正确的,另一个版本可能(取决于使用的正则表达式引擎)会匹配不正确,因为例如在.NET中,\d匹配的远不止数字0-9 - Tim Pietzcker
1
可能是正则表达式:数字范围的重复问题。 - Saullo G. P. Castro
显示剩余4条评论
11个回答

0

又一个 -

 #  ^-?0*(?:20(?:[0-4][0-9]|5[0-5])|[0-9]{1,3})$

 ^ 
 -?
 0*
 (?:
      20
      (?:
           [0-4] [0-9] 
        |  
           5 [0-5] 
      )
   |  
      [0-9]{1,3} 
 )
 $

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接