史上最全IP正则表达式
方法一:((???:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))
方法二:((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
方法三:((25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d).){3}(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
方法四:(((2(5[0-5]|[0-4]\d))|1?\d{1,2}).){3}((2(5[0-5]|[0-4]\d))|1?\d{1,2})
(((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2}).){3}((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})
((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
2(5[0-5]|[0-4]\d) 匹配:200 ~ 255
[0-1]?\d{1,2} 匹配:0 ~ 199
IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开。例如:某台计算机IP地址为10.11.44.100。
分析IP地址的组成特点:250-255、200-249、0-199。
这三种情况可以分开考虑,
- 250-255:特点:三位数,百位是2,十位是5,个位是0~5,用正则表达式可以写成:25[0-5]
- 200-249:特点:三位数,百位是2,十位是04,个位是09,用正则表达式可以写成:2[0-4]\d
- 0-199:这个可以继续分拆,这样写起来更加简单明了.
3.1. 0-9: 特点:一位数,个位是0~9,用正则表达式可以写成:\d
3.2. 10-99: 特点:二位数,十位是19,个位是09,用正则表达式可以写成:[1-9]\d
3.3. 100-199:特点:三位数,百位是1,十位是09,个位是09,用正则表达式可以写成:1\d{2}
于是0-99的正则表达式可以合写为[1-9]?\d,那么0-199用正则表达式就可以写成(1\d{2})|([1-9]?\d),这样0~255的正则表达式就可以写成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))
最后,前面3段加上句点.可以使用{3}重复得到,第4段再来一次同样的匹配,得到IP地址的正则表达式:
((???:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))
与大家互动一下:
- 为什么三位数的匹配放在二位数/一位数的前面?因为正则表达式规则之一:最先开始的匹配拥有最高的优先权。
- 0.0.0.0和255.255.255.255是合法存在的IP地址,你知道是为什么吗?
- 192.169.01.108这种数字前面多带了个0的类型的,在这里不是合法的,为什么要这样?
- 为什么前面在最前面要有?:呢?它在这里有什么用?
- 如果您发现本表达式有错误,也请留言指正!
正则表达式:
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
红色块代表:第一个字符是2,第二个字符是0到4,第三个字符是任意一位数字。表示200~249。
绿色块代表:第一个字符是2,第二个字符是5,第三个字符是0到5。表示250~255。
蓝色块代表:第一个字符是0,或者1,或者可以没有这个字符,第二个字符是任意一位数字,第三个字符是任意一位数字,可以没有这个字符。表示1~199,可以有前导零。
“|”代表“或者”的意思,只要满足三块中的任意一块的意思。
前后的“(”和“)”代表这是一组
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
{3}代表重复三次。比如“255.255.255.”。
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
最后这一组的意思同上,就是在“.”后面加上相同的检测。
史上最全IP正则表达式相关推荐
- 史上最全PHP正则表达式实例汇总
收集了一份php正则表达式的实例教程,真心不错,记录下. 正则表达式用于字符串处理.表单验证等场合,实用高效. 一些常用的表达式: $str = preg_replace("/(<a. ...
- 史上最全的正则表达式-匹配
在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理. 1.匹配中文:[\u4e00-\u9fa5] 2.英文字母:[a-zA- ...
- 【CSDN软件工程师能力认证学习精选】python | 史上最全的正则表达式
CSDN软件工程师能力认证(以下简称C系列认证)是由中国软件开发者网CSDN制定并推出的一个能力认证标准.C系列认证历经近一年的实际线下调研.考察.迭代.测试,并梳理出软件工程师开发过程中所需的各项技 ...
- 史上最全的正则表达式
刚才浏览网页的时候碰巧看到一篇关于正则表达式的博客.感觉不错,拿开分享一下. 一.校验数字的表达式 1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$4 m- ...
- 史上最全-常见正则表达式集合
目录 前言 正文 1.邮箱账号,如网易邮箱.qq邮箱.163邮箱等等 2.手机号码 3.性别 4.属于那个民族 5.车牌号信息 6.座机等 7.军官证信息 8.护照号信息等 9.港澳通行证信息 10. ...
- 史上最全常用正则表达式
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下.给自己留个底,也给朋友们做个参考. ...
- 正则表达式 正整数_史上最全的正则表达式 (1) -- 校验数字的表达式
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下.给自己留个底,也给朋友们做个参考. ...
- 史上最全的IP地址详解,速来get
史上最全的IP地址详解 白在了解虚拟机网络之前,我们首先得了解ip地址是什么? 1.简单局域网的构成 局域网:一般称为内网 简单局域网的构成:交换机.网线.PC(其他IT终端) 交换机:用来组建内网的 ...
- Prometheus+Grafana (史上最全)
尼恩大架构 最强环境 系列文章 一键打造 本地elk 实操环境: ELK日志平台(elasticsearch +logstash+kibana)原理和实操(史上最全) 高级开发必备,架构师必备 一键打 ...
最新文章
- 2!=5 or 0在python中是否正确-python中的if判断语句
- JZOJ 100043. 【NOIP2017提高A组模拟7.13】第K小数
- 【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer
- Java与C、C++的区别
- 数组转换成json key-value形式
- mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
- 人的手臂的自由度的数目以及六自由度机械臂的限制
- Jquery Ajax 请求示例
- java 在圆圈里添加字母,在圆圈内写入数字或字母的方法
- 人工势场法--路径规划--原理--matlab代码
- MacBookPro 键盘映射
- 关于查询界面渲染问题
- 发几个flashxp注册码
- java毕业设计演唱会门票订售及管理系统Mybatis+系统+数据库+调试部署
- windows10上配置pyspark工作环境
- 第二次作业-时事点评
- 数据库的数据文件和日志文件
- aes在tomcat解密中文乱码,在控制台解密中文不是乱码
- plc和c语言谁的前景好,PLC面向对象编程和梯形图逻辑,到底谁更实用一些?
- 浅谈zookeeper