本文共 924 字,大约阅读时间需要 3 分钟。
在进行多次测试后,我们发现目标地址的有效性验证规则能够正确识别大部分合法IP地址,仅有一小部分异常情况未能通过验证。以下是测试结果的一部分示例:
IP地址 | 验证结果 |
---|---|
192.168.1.1 | ✅ |
255.255.255.255 | ✅ |
172.16.254.56 | ✅ |
10.10.10.10 | ✅ |
255.255.254.255 | ❌ |
256.256.256.256 | ❌ |
从测试数据来看,该规则在整体上表现良好,但仍有待优化。
我们开发的验证规则基于以下正则表达式进行匹配:
((25[0-5])|(2[0-4]\d)|(1\d{2})|([1-9]\d?)))\.(((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d\d?))\.){2}((25[0-5])|(2[0-4]\d)|(1\d{2})|(\d\d?))
理论上,该规则应能匹配几乎所有有效的私有IP地址格式,包括: 值得注意的是:
Pattern.quote()
对特殊字符进行转义处理该规则主要借鉴自helloshrek的博客,该博客提供了详细的解释:
\d
表示0-9的任意数字
{2}
表示重复两次
[0-4]
表示0-4的范围
"|"
表示或运算符
括号()
用于指定匹配组,规则中括号代表的IP地址各个区间
1\d{2}
表示10.0.0到10.99.99的范围,其中第一位是1
2[0-4]\d
表示20.0.0到24.31.31的范围,最后一位是0-9的任意数字
25[0-5]
表示250.0.0到255.5.255的范围
[1-9]\d?
表示10.0.0到99.99.99的范围
每个区段中的\.
表示匹配网段号,需要注意转义