对于0-100(包括0-100)的整数,最简洁的正则表达式

时间:2015-09-01 16:51:35

标签: regex

我试图找到最简洁的方法来为0-100(包括0-100)的整数编写正则表达式。这是我到目前为止,还有更好的形式吗?

^[0-9][0-9]?$|^100$

3 个答案:

答案 0 :(得分:1)

正则表达式对于某些任务来说是一个非常强大的工具,但是当应用于它不适合的事情时,它很快就会失控。很难说不知道为什么你需要这个特殊的正则表达式,但在大多数情况下我更喜欢捕获你想要的数字,然后使用你的编程语言来评估捕获的值是否在所需的范围内。这似乎是一种正则表达式会使您的代码不必要地复杂化的情况。

也就是说,如果您承诺使用正则表达式并且不想要前导零,那么您可能需要^[1-9]?\d$|^100$

答案 1 :(得分:1)

我建议不要这样做,但要回答你的问题......我认为这个正则表达式是最简洁/纯粹的版本:

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

Demo

备注

  • 我使用了(非捕获)组,因此^$锚只使用一次。
  • 我把100放在交替的第一位,因为99%(任意估计)时间会更有效... 200会立即失败而不是匹配20然后失败。
  • 我选择不使用\d,因为isn't the same as [0-9]

答案 2 :(得分:0)

处理每个案例,如001或00001,使其更复杂,这是我能想到的最好的。当然,您可以使用\d使其看起来更短。

^0*\(100\|^[0-9]\?[0-9]\)$