IP地址的正则表达式
关键字:IP地址 正则表达式
作者:txw1958
出处:http://www.cnblogs.com/txw1958/archive/2011/10/13/ip_address_regular_expression.html
IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开。例如:某台计算机IP地址为10.11.44.100。
分析IP地址的组成特点:250-255、200-249、0-199。
这三种情况可以分开考虑,
1. 250-255:特点:三位数,百位是2,十位是5,个位是0~5,用正则表达式可以写成:25[0-5]
2. 200-249:特点:三位数,百位是2,十位是0~4,个位是0~9,用正则表达式可以写成:2[0-4]\d
3. 0-199:这个可以继续分拆,这样写起来更加简单明了.
3.1. 0-9: 特点:一位数,个位是0~9,用正则表达式可以写成:\d
3.2. 10-99: 特点:二位数,十位是1~9,个位是0~9,用正则表达式可以写成:[1-9]\d
3.3. 100-199:特点:三位数,百位是1,十位是0~9,个位是0~9,用正则表达式可以写成: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))))
与大家互动一下:
1. 为什么三位数的匹配放在二位数/一位数的前面?因为正则表达式规则之一:最先开始的匹配拥有最高的优先权。
2. 0.0.0.0和255.255.255.255是合法存在的IP地址,你知道是为什么吗?
3. 192.169.01.108这种数字前面多带了个0的类型的,在这里不是合法的,为什么要这样?
4. 为什么前面在最前面要有?:呢?它在这里有什么用?
5. 如果您发现本表达式有错误,也请留言指正!
我使用的正则表达式验证工具,The Regulator 下载地址:http://sourceforge.net/projects/regulator/
IP地址的正则表达式的更多相关文章
- 过滤IP地址的正则表达式
现场需求,过滤 指定IP段位的相关话单,收集看看用正则表达式怎么写, 原文地址:http://www.cnblogs.com/kongxianghai/p/3995463.html 检测IP地址的正则 ...
- 验证中文、英文、电话、手机、邮箱、数字、数字和字母、Url地址和Ip地址的正则表达式
Helper类代码 public class Helper { #region 单列循环 private Helper() { } private static Helper instance = n ...
- 匹配合法IP地址的正则表达式
IPV4地址分为4段,以点号分隔.如192.168.26.13.要对IP地址进行匹配,首先要对其进行分析,分成如下部分,分别进行匹配: 第一步:地址分析,正则初判 0-9 \d 进行匹配 1 ...
- IP地址的正则表达式写法
这里讲的是IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值. 将0-255用正则表达式表示,可以分成一下几块来分别考虑: 取值区间 特点 正则写法 ...
- 多个ip地址匹配正则表达式
匹配规则:多个ip地址使用,号进行分割 例如:1.1.1.1,2.2.2.2var iplist =/^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}( ...
- 检测IP地址的正则表达式
正则表达式: ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) ((2[0-4]\d|25[0-5]|[01]?\d\ ...
- 匹配IP地址的正则表达式 (转)
正则表达式 ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[ ...
- Python 匹配IP地址的正则表达式
- JavaScript正则表达式检验手机号码、邮箱、ip地址等
1)检测IP地址的正则表达式 ((2 [0-4] \d | 25[0-5] | [01]?\d\d?) \.){3}(2 [0-4] \d | 25[0-5] | [01]?\d\d?) 2 [0-4 ...
随机推荐
- JS中给函数参数添加默认值(多看课程)
JS中给函数参数添加默认值(多看课程) 一.总结 一句话总结:咋函数里面是可以很方便的获取调用函数的参数的,做个判断就好,应该有简便方法,看课程. 二.JS中给函数参数添加默认值 最近在Codewar ...
- HDU 1045 Fire Net(行列匹配变形+缩点建图)
题意:n*n的棋盘上放置房子.同一方同一列不能有两个,除非他们之间被墙隔开,这种话. 把原始图分别按行和列缩点 建图:横竖分区.先看每一列.同一列相连的空地同一时候看成一个点,显然这种区域不可以同一时 ...
- [HTTP] Understand 2xx HTTP Status Code Responses
The 2xx family of status codes are used in HTTP responses to indicate success. Beyond the generic 20 ...
- JNDI 的理解
JNDI是 Java 命名与文件夹接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之中的一个,不少专家觉得,没有透彻理解JNDI的意义和作用 ...
- web项目的WEB-INF目录
WEB-INF是Java的WEB应用的安全目录.所谓安全就是客户端无法访问,只有服务端可以访问的目录. 如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问. ...
- Ubuntu安装编译OpenCV一键脚本(带ffmpeg)
1.切换到用户文件夹 cd ~ 2.新建一个文件.命名为opencv.sh 脚本例如以下: version="$(wget -q -O - http://sourceforge.net/pr ...
- iOS中js与objective-c的简单交互
1.首先是objective-c调用js中的代码,可以用UIWebview中的一个方法 stringByEvaluatingJavaScriptFromString:后面接的是js中的方法名.这个函数 ...
- ARM汇编初探---汇编代码中都有哪几类指令---ARM伪指令介绍
要学习一个东西首先要把概念搞清楚,以下仅仅是自己的一些关于汇编的理解. 可运行文件里的01码是机器码,机器码不等于汇编码,尽管机器码能够非常easy翻译成汇编码. 汇编码中包括非常多汇编指令.伪指令和 ...
- Linux限制资源使用的方法
很多人说virmach不好,老是suspend,我从未被suspend过,建站也很稳定,所以我就来说说怎么操作(其实就是遵循他们的TOS,如果你是abusive user,滚粗): 先读读TOS,核心 ...
- Android开发者的演示工具——asm.jar
作为Android开发者,我们有时候需要给客户或者其他人演示我们的Android作品.我们可以使用类似豌豆荚.360手机助手这样的软件,今天我来介绍一个Android开发者的演示工具--asm.jar ...