最简洁的整数正则表达式,从0-100包括在内



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

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

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

也就是说,如果您致力于使用正则表达式并且不希望前导零,则可能需要^[1-9]?d$|^100$

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

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


指出

  • 我使用(非捕获)组,因此^$锚只使用一次。
  • 我把100放在首位,因为99%的时间(任意估计)它会更有效…200会立即失败,而不是匹配20然后失败。
  • 我选择不使用d,因为它与[0-9]不同。

处理每一种情况,比如001或00001,使它更复杂,这是我能想到的最好的。当然,你可以使用d使它看起来更短。

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

最新更新