正式表达式判断私有 IP 地址
正式表达式判断合法 IP 地址
对于一个 IP 地址 a.b.c.d ,a/b/c/d 代表一个小于或等于 255 的 10 进制数,并且 a 不能为 0。
对于 a,它的范围是 1 – 255,分 3 种情况来编写正式表达式:
- 一位数的情况,范围是 1 – 9,正则表达式为
[1-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]
- 第一个范围是 100 – 199,正则表达式为
所以匹配 a 的完整的正则表达式应该为:
|
1
|
[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
|
对于 b/c/d,它的范围是 0-255,所以匹配的正则表达应该为:
|
1
|
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
|
上面已经把一个 IP 地址各段数字的正则表达推导出来了,现在对其进行合并,让正则表达式更加简短。对于 a 段,合并后的正则表达式如下:
|
1
|
[1-9][0-9]?|1[0-9]{2}|2([0-4][0-9]|5[0-5])
|
对于 b/c/d 段,合并后的正则表达式如下:
|
1
|
([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5])
|
再看完整的 a.b.c.d ,可以拆分为a+.(b)+.(c)+.(d),后面三段完全相同,所以合并之后就是 a+(.(b)){3},即:
|
1
|
^([1-9][0-9]?|1[0-9]{2}|2([0-4][0-9]|5[0-5]))(.(([1-9]?|1[0-9])[0-9]|2([0-4][0-9]|5[0-5]))){3}$
|
需要注意的是,以上正则表达式不能匹配 0.0.0.0 这个 IP 地址。
- A 类私有地址,范围:
10.0.0.0 - 10.255.255.255 - B 类私有地址,范围:
172.16.0.0 - 172.31.255.255 - C 类私有地址,范围:
192.168.0.0 - 192.168.255.255
172.16.44.0/22
Start:172.16.44.1
End: 172.16.47.254
172.16.4[4-7].([0-9]?|([1-9][0-9])?|(1[0-9][0-9])?|(2[0-4][0-9]|25[0-5])?){3}
正式表达式判断私有 IP 地址的更多相关文章
- 解析私有IP地址和公网IP地址
局域网私有IP地址上外网的原理 IP地址分为两部分,网络号和主机号,这种分法应用在私有和公有IP地址上.一个局域网中,为了该局域网的安全,我们应用了私有IP地址,为了和Internet中的其他主机进行 ...
- 私有IP地址范围
私有IP地址范围 有一部分的地址专门是用于内网的地址,包括: A类中 10.0.0.0/8 B类中 172.16.0.0/12 ~ 172.31.0.0/12 C类中 192.168.0.0/16 这 ...
- 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区
一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ...
- 私有IP地址共有三个范围段
在现在的网络中,IP地址分为公网IP和私有IP地址.公网IP是在Internet使用的IP地址,而私有IP地址是在局域网中使用的IP地址. 由于我们目前使用的IP V4协议的限制,现在IP地址的数量是 ...
- 转:php中判断某个IP地址是否存在范围内
原文:php中判断某个IP地址是否存在范围内 //案例:判断192.168.1.127是否在 (192.168.1.1--192.168.1.255)的范围里面 $ip_start = get_ipl ...
- 【网络基础】【TCP/IP】私有IP地址段
私有IP地址段 Class A:10.0.0.0 - 10.255.255.255 Class B:172.16.0.0 - 172.31.255.255 Class C:192.168.0. ...
- 判断一个IP地址是否是本局域网内地址
// /// <summary> /// 判断一个IP地址是否是本局域网内地址,是返回true 否则返回false, /// </summa ...
- IPv4私有IP地址有哪些!
私有IP地址是一段保留的IP地址.只是使用在局域网中,在Internet上是不使用的. 私有IP地址的范围有: 私网地址分有三类, A类中,第一段为10的都为私网地址,B类中,以172.16--172 ...
- 私有ip地址知多少?
1.私有ip的由来 在现在的网络中,ip地址分为公网ip地址和私有ip地址.公网ip是在Internet中使用的ip地址,而私有ip地址是在局域网中使用,在Internet上不使用. 由于我们目前使用 ...
随机推荐
- vue2上传图片到OSS
第一步:安装阿里云OSS <!-- 引入在线资源 --> <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk- ...
- CNN试验记录
CIFAR-10 图像处理:(预处理还是很重要的) 数据随机裁剪,填充0 依概率p水平翻转 1.VGG16 SGD lr=0.01 momentum 0.9 weight_decay=0.0001 e ...
- 使用CNN生成图像先验,实现更广泛场景的盲图像去模糊
现有的最优方法在文本.人脸以及低光照图像上的盲图像去模糊效果并不佳,主要受限于图像先验的手工设计属性.本文研究者将图像先验表示为二值分类器,训练 CNN 来分类模糊和清晰图像.实验表明,该图像先验比目 ...
- SpringMVC和Struts2区别比较
区别1: Struts2 的核心是基于一个Filter即StrutsPreparedAndExcuteFilterSpringMvc的核心是基于一个Servlet即DispatcherServlet( ...
- Ubuntu 16.04 强制使用ipv4安装apt-get
参考文献:https://www.linuxidc.com/Linux/2015-09/123340.htm 起因:每次校园网都要自动用ipv6不知道为什么又总之链接不上,导致安装失败,有以下命令强行 ...
- dbca建库--linux上使用vnc图形化安装oracle10g版本
选择创建数据库 配不配置em,自己决定,我们选择配置 配置下面账户密码,在项目中,下面账户肯定是不相同的,我们这里输入相同的,密码为oracle10g 选择文件系统存放(asm和字符设备暂时不能存放) ...
- 20165308『网络对抗技术』Exp5 MSF基础应用
20165308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...
- day02 格式化字符串
字符格式化2019-04-01 方法一 通过f + {} 格式化字符串 name = input("Name: ")age = input("Age:")sco ...
- 剑指offer 11. 位运算 二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. //思想:用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数 private stat ...
- Winform外包团队 项目案例展示
北京动点飞扬软件开发团队 C# WInform项目案例展示 长年承接WInForm C#项目开发,商业案例欢迎联系我们索取 有相关项目外包定制开发 欢迎联系我们 qq372900288 Tel 139 ...