RegEx Vs If语句用于验证数字范围

时间:2015-02-19 06:21:55

标签: java regex

我必须验证一个数字是否在范围内(0-255)。 我可以使用正则表达式或使用if语句来执行此操作。

正则表达式:

\b([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b

或者

If(number>-1 && number <=255)

我想知道哪一个更适合用来验证数字范围。

思想!

5 个答案:

答案 0 :(得分:3)

我使用一个简单的规则:
如果您可以在没有正则表达式的情况下进行编码并保持简单 - 那就不用了 Regexps为您提供了很多功能,但掌握起来可能很棘手 在您的情况下 - “if”代码将运行得更快,并且具有更好的可读性 很多时候 - 正则表达式可能相当于在需求变化时理解和维护非常复杂的东西。

答案 1 :(得分:2)

您可能会使用String.matches()进行匹配/检查。哪个非常低效。它在内部编译模式,使用同步等等等等。

所以,最重要的是,尽可能避免使用正则表达式(此外,您必须将数字转换为字符串然后使用正则表达式。这会浪费空间时间

PS:另请注意,数学运算总是跨平台更有效地处理。

答案 2 :(得分:1)

使用正则表达式比较,数字比较比String更有效。通过比较数字作为一个字符串是复杂的。

答案 3 :(得分:1)

当您使用以下数据时,您的正则表达式将为您提供部分匹配:

-123 +12 !12

因此,最好使用string comparison来避免看不见的问题并维护复杂的正则表达式。请参阅演示。

https://regex101.com/r/mS3tQ7/11

答案 4 :(得分:1)

为了保持简单易懂(w.r.t你的问题)我建议去找if语句。但对于复杂的验证,我建议使用正则表达式。其原因也是一样的 - 保持简单易懂。为什么在使用简洁的25-30字符正则表达式模式验证相同时,使用8-10行if-then块!如果将相同的模式放在.config文件中,您现在可以更改应用程序的行为而无需重新编译。代码减少了以更灵活的方式完成更多工作。

相关问题