使用正则表达式匹配IP地址
2014-06-15 18:12
176 查看
如何使用正则表达式匹配IP地址?这是很常见的任务。说难也难,说易也易,取决于在匹配的精确度以及正则表达式复杂度之间很好的折中。
通常,IP地址以点分十进制方式表示,IP地址分为4段,以点号分隔。要对IP地址进行匹配,首先要对其进行分析。0.0.0.0 - 255.255.255.255
一个简单的正则表达式:
下面来一个精确一点的:
第一步:初步分析
我们可以把0-9,10-99,100-199合并为0-199
注意:
http://answers.oreilly.com/topic/318-how-to-match-ipv4-addresses-with-regular-expressions/
通常,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的
http://answers.oreilly.com/topic/318-how-to-match-ipv4-addresses-with-regular-expressions/
相关文章推荐
- 使用正则表达式匹配ip地址是否合法
- 使用正则表达式生成匹配数组
- C#判断IP地址是否合法函数-使用正则表达式-2个
- C#中使用正则表达式验证Email格式、IP地址格式和URL网址格式
- 使用正则表达式匹配嵌套Html标签
- C#判断IP地址是否合法函数-使用正则表达式-2个
- Regex.Match,使用正则表达式匹配字符串
- 使用C#正则表达式匹配相关字符串
- C#中使用正则表达式验证Email格式、IP地址格式和URL网址格式
- 在C#中使用正则表达式自动匹配并获取所需要的数据 (转)
- C#判断IP地址是否合法函数-使用正则表达式-2个
- 利用正则表达式匹配IP地址
- SQL Server 2005 中使用正则表达式匹配
- 使用正则表达式匹配嵌套Html标签
- 在C#中使用正则表达式自动匹配并获取所需要的数据
- T_SQL中使用正则表达式匹配查询结果
- Java正则表达式匹配、替换HTML内容[使用Jakarta ORO]
- Java/Js下使用正则表达式匹配嵌套Html标签
- C#中使用正则表达式匹配字符串