如何使用正则表达式匹配IP地址?这是很常见的任务。说难也难,说易也易,取决于在匹配的精确度以及正则表达式复杂度之间很好的折中。

通常,IP地址以点分十进制方式表示,IP地址分为4段,以点号分隔。要对IP地址进行匹配,首先要对其进行分析。0.0.0.0 - 255.255.255.255

一个简单的正则表达式:[0-9]+(?:\.[0-9]+){0,3}

或者^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

它能够完成我们的任务,但是像"3948.3.89.34238"这种字符串也会被匹配到,而我们IP地址的范围0-255之间的值。

下面来一个精确一点的:^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}

(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

注意:上面的表达式是一行,因为这里长度不够所以换行了。

第一步:初步分析IP地址分为4个段,每个段上可能的取值如下

0-9

10-99

100-199

200-249

250-255

第二步:正则表达0-9          [0-9]

10-99        [1-9][0-9]

100-199      1[0-9][0-9]

200-249      2[0-4][0-9]

250-255      25[0-5]

第三步:合并

我们可以把0-9,10-99,100-199合并为0-199[01]?[0-9][0-9]?

第四步:组合^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}

(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

OK,最终的正则表达式搞定。

注意:?:    表示非捕获文本

表达式是基于BRE的

java正则匹配ip_使用正则表达式匹配IP地址相关推荐

  1. python正则匹配ip_[求助] 正则表达式匹配 IP 地址的问题求助

    需求: 有一个列表,表中元素包含IP地址,空元素,文字.想从这个列表中匹配出特定规律的IP地址,列表见下图 testip = ['', '', '', 'IP(30位)', '', '24.45.12 ...

  2. java正则任意字符_正则表达式匹配任意字符(包括换行符)的写法

    今天在Java中想使用正则表达式来获取一段文本中的任意字符.于是很随意得就写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现正则表达式中,". ...

  3. java正则 链接_Java使用正则表达式匹配获取链接地址的方法示例

    本文实例讲述了Java使用正则表达式匹配获取链接地址的方法.分享给大家供大家参考,具体如下: 获取页面中字符串的url地址我们都会使用正则表达式来匹配获取了,下面我来给大家总结几个匹配获取链接地址示例 ...

  4. java 正则 括号外_正则表达式匹配括号外的符号及数据

    正则表达式匹配括号外的符号 [\\?!/\\.,\\s]+(?=[^\\)]*(\\(|$)) 将括号外的?!/.,和空格(连续多个时同时)匹配 如 String string1 = "sd ...

  5. java 正则 小括号_java正则表达式匹配小括号内的内容

    正则表达式用来指定字符串模式.当你需要定位匹配某种模式的字符串时就可以使用正则表达式.例如,我们下面的一个例程就是在一个HTML文件中通过查找字符串模式来定位所有的超链接.     当然,为了指定一种 ...

  6. java 正则 连续数字_Java - 正则表达式匹配字符串中的连续数字或字符

    下面是一个快速,肮脏,未优化(可能是越野车),但你想要实现什么样的独立示例. public static void main(String[] args) { // should not allow ...

  7. linux命令获取本机外网公网ip地址,java程序获取本机外网公网ip地址 代码

    linux命令获取本机外网ip地址 1 直接返回ip 最快 稳定 curl ns1.dnspod.net:6666 curl whatismyip.akamai.com curl icanhazip. ...

  8. shell脚本通过正则表达式提取 IP 地址

    假设需要提取的 IP 地址在文件 test.txt 中,可以使用以下 shell 脚本通过正则表达式提取 IP 地址并打印 grep -E -o "([0-9]{1,3}.){3}[0-9] ...

  9. 内网ip正则表达式php,PHP使用正则表达式判断IP地址是否正确

    IP 地址想必大家都很熟悉,由 4 组 0~255 之间的数字组成,每个数字之间使用英文句号"."分割,例如 192.168.0.1 就是一个有效的 IP 地址.想要正确的使用正则 ...

最新文章

  1. 【算法笔记】B1044 火星数字
  2. Linux-编写Shell的几个技巧
  3. 我的模块加载系统 v17的入门教程2
  4. Tomcat服务器启动错误之Offending class: javax/servlet/Servlet.class
  5. JavaSE----多态
  6. ES6学习(二)—变量的解构赋值
  7. Spring 加载Bean流程
  8. 如何使用 Weave 网络?- 每天5分钟玩转 Docker 容器技术(63)
  9. 几楼电路精灵——手机端 原理图 PCB
  10. android 去广告浏览器,手机去广告浏览器Adblock Plus Browser
  11. 无线网络连接不上请检查服务器,为什么无线网络连接不上?
  12. 北京 php 外包,=== | php外包与php技术服务商
  13. 奇迹暖暖服务器不稳定,奇迹暖暖怎么换服务器
  14. 洛谷4234最小差值生成树 (LCT维护生成树)
  15. 运营必备九大互联网思维
  16. java jvm垃圾回收算法_深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法
  17. 常用开源协议详细解析
  18. 基于SIMPLE的Navier-Stokes方程解算器matlab代码
  19. SpringMVC——对Ajax的处理(包含 JSON )
  20. 摘自林少波的《毕业5年决定你的一生》

热门文章

  1. 实体类-银行账户余额推算表(Savings Account Class)
  2. OpenLayers4加载天地图WMTS注意事项
  3. 面试官:MySQL事务的隔离性是如何实现的?
  4. Web前端技术分享:CSS菜单图标相关知识
  5. LeetCode 803. Bricks Falling When Hit
  6. 街霸对决最新服务器机柜销售,街霸对决:2021年1月14日更新维护公告
  7. Android开发--SQLit嵌入式数据存储
  8. Fedora 21下使用金山快盘
  9. 网站服务器上生成csr,Zeus Web服务器生成CSR文件的方法
  10. ‘Sequential‘ object has no attribute ‘predict_classes‘