博客
关于我
Java正则表达式:iPv4的ip地址匹配
阅读量:522 次
发布时间:2019-03-07

本文共 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地址格式,包括:

  • 10.0.0.0到10.255.255.255(10.x.x.x)
  • 172.16.0.0到172.31.255.255(172.x.x.x)
  • 192.168.0.0到192.168.255.255(192.168.x.x)
  • 255.255.0.0到255.255.255.255(255.255.x.x)

值得注意的是:

  • 本规则已排除0.0.0.0地址
  • 在Java实现时,需确保使用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的范围

    • 每个区段中的\. 表示匹配网段号,需要注意转义

    你可能感兴趣的文章
    mysql中null和空字符串的区别与问题!
    查看>>
    MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
    查看>>
    MYSQL中TINYINT的取值范围
    查看>>
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>