本文共 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的范围
每个区段中的\. 表示匹配网段号,需要注意转义