正则表达式,用于验证多个数字范围

时间:2015-10-06 18:48:37

标签: java regex validation

我正在尝试验证允许属于多个范围的数字。 e.g:

数字x有效,如果它介于150-200或700-750

基本上我想将这些限制存储在数据库中,所以我认为将它们存储为正则表达式将是处理这个问题的好方法。

我是正则表达式的新手,因此无法为上述验证提出一个。

1 个答案:

答案 0 :(得分:2)

<强>解决方案:

1[5-9][0-9]|200|7[0-4][0-9]|750

<强>解释

由于你有一个非常明确的范围,正则表达式相当简单。

它可以分为两部分:

  1. 150 199 OR 200
  2. 700 749 OR 750
  3. 因此,拼凑正则表达式将为

    ((150 199 OR 200) OR (700 749 OR 750))

    你的第一个数字是150,所以我们必须匹配第一个数字的'1',然后是第二个数字的范围,可能是5到9(你不想要少于150,所以4第三位数字的范围可以是0到9之间的任何数字。这样可以捕获从150到199的所有数字。

    第一个范围中的最后一个数字是200,所以我们可以查找它。它与该范围内的其他可能性有太大的不同,因此更容易专门寻找它而不是试图考虑将其包含在正则表达式范围内的复杂方式。

    第二个范围遵循相同的模式但具有不同的数字。同样,我们正在寻找大部分数字,使用正则表达式范围并寻找最后一个数字750,特别是因为它太不同了 - 中间有一个数字5。如果我们在中间正则表达式范围中包含5,那么它将达到759,这超出了范围。

    最后, OR 这两个部分和正则表达式都准备好了。

    根据您的输入进行调整。您可能需要使用^和$将其包围在行的开头和结尾,或者如果您的输入包含有问题的数字的其他文本,请展开正则表达式以适当地处理它。