我必须验证一个数字是否在范围内(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)
我想知道哪一个更适合用来验证数字范围。
思想!
答案 0 :(得分:3)
我使用一个简单的规则:
如果您可以在没有正则表达式的情况下进行编码并保持简单 - 那就不用了
Regexps为您提供了很多功能,但掌握起来可能很棘手
在您的情况下 - “if”代码将运行得更快,并且具有更好的可读性
很多时候 - 正则表达式可能相当于在需求变化时理解和维护非常复杂的东西。
答案 1 :(得分:2)
您可能会使用String.matches()
进行匹配/检查。哪个非常低效。它在内部编译模式,使用同步等等等等。
所以,最重要的是,尽可能避免使用正则表达式(此外,您必须将数字转换为字符串然后使用正则表达式。这会浪费空间和时间)
PS:另请注意,数学运算总是跨平台更有效地处理。
答案 2 :(得分:1)
使用正则表达式比较,数字比较比String更有效。通过比较数字作为一个字符串是复杂的。
答案 3 :(得分:1)
当您使用以下数据时,您的正则表达式将为您提供部分匹配:
-123
+12
!12
。
因此,最好使用string comparison
来避免看不见的问题并维护复杂的正则表达式。请参阅演示。
答案 4 :(得分:1)
为了保持简单易懂(w.r.t你的问题)我建议去找if语句。但对于复杂的验证,我建议使用正则表达式。其原因也是一样的 - 保持简单易懂。为什么在使用简洁的25-30字符正则表达式模式验证相同时,使用8-10行if-then块!如果将相同的模式放在.config文件中,您现在可以更改应用程序的行为而无需重新编译。代码减少了以更灵活的方式完成更多工作。