【发布时间】:2015-09-08 18:20:39
【问题描述】:
here 定义的保留 IP 地址范围之一是:
屏蔽 100.64.0.0/10
范围 100.64.0.0 – 100.127.255.255
我正在尝试构建一个正则表达式来捕获此范围内的任何地址,但如果不为第二个 8 位指定每个可能的值,我看不到任何方法。
如果我只是将我的正则表达式保留为“任何以 100 开头的 IP 地址”,这就足够了吗?或者换一种说法,是否有任何以 100 开头但不在 100.64.0.0 范围内的非保留地址 - 100.127.255.255?
【问题讨论】:
-
如果你使用 Perl,你可以使用
(\d+)(??{ $^N>64 && $^N<128 ? '' : '(?!)' })之类的东西来检查第二个三元组。但是正则表达式绝对是错误的工具,我建议你使用其他东西来保存你自己的理智。由于 IPv4 空间已接近用尽,因此您获得以 100 开头但超出范围的地址的可能性很大。 -
正则表达式确实是错误的工具。更容易将地址转换为数字或字符串(例如 inet_pton),以便您可以进行正常的范围检查。
标签: dns ip ip-address ipv4