正则表达式:数字范围

Mor*_*ten 29 regex

你如何编写一个匹配数字范围从0到000到180的正则表达式?

ste*_*ell 34

我不认为正则表达式是正确的选择.你试过解析这个值吗?如果你必须使用正则表达式,我会匹配\d{1,3}解析字符串然后验证代码中的数字.

  • +1其他答案每个至少有一个bug,这就是为什么不值得使用RE来完成这些任务. (8认同)
  • 甚至两个错误:(但是,是的,我从根本上同意. (3认同)
  • 那么,在这种情况下捕获捕获组中坐标的每个单独部分并在之后验证它们. (3认同)

Joe*_*oey 29

最简单的方法是将字符串解析为数字,并查找数字在适当的范围内.

要使用纯正则表达式执行此操作,您需要识别模式并将其写出:

^(0?[0-9]{1,2}|1[0-7][0-9]|180)$
Run Code Online (Sandbox Code Playgroud)

这有三种选择:一种用于单位和两位数字(允许前导零),其中每个数字可以是0到9之间的任何数字.另一个指定允许三位数的每个数字的数字范围数.在这种情况下,这意味着第一个数字需要为1,第二个数字需要在0到7之间,最后一个数字可以是任何数字.第三种选择仅适用于数字180,它与其他地方的模式不相符.

一种更直接的方法可能是

^(0{0,2}[0-9]|0?[1-9][0-9]|1[0-7][0-9]|180)$
Run Code Online (Sandbox Code Playgroud)

这可能只是为每个棘手的数值范围交替.


小智 14

最近发布的rgxg命令行工具生成与特定数字范围匹配的正则表达式:

$ rgxg range -Z 0 180
(180|1[0-7][0-9]|0?[0-9]{1,2})
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问http://rgxg.sf.net.