使用正则表达式检查数字范围

2022-09-02 02:59:31

我使用正则表达式来验证字符串中的某种格式。此字符串将成为游戏的规则。

示例:根据规则,“DX 3”是可以的,但“DX 14”也可以...我知道如何查看字符串并找到一个或多个“数字”,所以问题是正则表达式也将匹配34,并且这个数字超出了规则的“范围”...

我是否缺少有关正则表达式的某些内容来执行此操作?还是根本不可能?


答案 1

不幸的是,没有简单的方法可以在正则表达式中定义范围。如果您要使用范围1-23,则最终会得到如下所示的正则表达式:

([1-9]|1[0-9]|2[0-3])

解释:

  1. 值为 1-9
  2. 或者该值以 1 开头,后跟 0-9
  3. 或者值以 2 开头,后跟 0-3

答案 2

它不是那么短,也不灵活。

如果搜索 1 到 19,则可以搜索“DX 1?例如,[0-9]“,但如果它没有在数字边界结束,它很快就会变得丑陋,并且更改规则是不灵活的。

在空白处拆分字符串,然后使用 x > 0 和 x < 24 更好理解,也更灵活。