【发布时间】:2015-05-26 05:11:57
【问题描述】:
我当前用于检查 ip 范围的正则表达式:178.2.1.1 to 178.2.1.254 如下:
178.2.1.1.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])$
有没有其他更好的表达方式来检查。
【问题讨论】:
-
定义“之间”。您指定的是一个上限,然后是一个下限。但是正则表达式是完全错误的工具。您应该只使用 IP 地址本身作为 32 位整数或字节数组,并以算术方式进行。
-
给定的正则表达式与请求的范围完全不匹配。
-
“之间”是什么意思?第二个 ip - 从数字上讲 - 低于第一个。
-
我想知道为什么,当有perfectly established way of dealing with IP ranges 时,人们仍然坚持使用正则表达式。例如,在 Java 中,您可以使用 Apache Commons implementation。
-
@biziclop:文章表示前 i 位很重要。这里
255和0被排除在外(是的,我知道这些是特殊的),但是可以说,出于某种奇怪的原因,希望一个 IP 介于178.2.8.14和194.45.2.41之间,你不能用这样的掩码执行此操作。