都知道iP地址有四个数值,三个点号组成。三个数值的具体范围为0到255,为了使用正则表达式匹配就必须分析IP地址的组成

1先分析数值,2再组合数值和点号

1先分析数值

IP地址的数字范围从0到255,再细分就是0到99,100到199,200到249,250到255

匹配 0到99的正则表达式是:\d{1,2},含义就是匹配1位或者是两位数字也可以写成[0-9]{1,2}

匹配 100到199的正则表达式是:1\d{2,2},,含义就是以1开头,后边有2个数值也可以写成1[0-9]{2,2}的三位数

匹配 200到249的正则表达式是:2[0-4][0-9],含义就是以2开头,中间是0到4之间的数值,最后是0到9之间的数字的三位数

匹配 250到255的正则表达式是:25[0-5],含义就是以25开头,后边是0到5之间的数值的三位数

所以为了匹配0到255之间的数字,正则表达式为:(\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5])

2再组合数值和点号

IP地址是数值+点号+数值+点号+数值+点号+数值,也就是:数值+点号重复三次,在匹配一个数值

因此匹配IP的正则表达式为:(((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))\.){3,3}((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))

如果需要验证IP地址的话,只需要加上前缀^,后缀$,正则表达式为:^(((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))\.){3,3}((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))$

测试代码:

 private static void Test() 
        {
            List<string> ipList = new List<string>();
            string ip = "25 23.245.67.899,,255.245.0.,255.245.0,23.245.67.89,255.245.23.9,255.245.0.9";
          //  Regex reg2 = new Regex(@"^(((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))\.){3,3}((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))$");验证IP的正则表达式
            
            Regex reg = new Regex(@"(?<ip>(((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))\.){3,3}((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5])))");
            Match m = reg.Match(ip);
            foreach (Match item in reg.Matches(ip))
            {
                ipList.Add(item.Groups["ip"].Value);                       
            }
        
        }

以上只是初步完成了IP地址的匹配,基本够用了,但依然会匹配一些错误的IP,例如0.0.0.0,123.123.123.123.123.123,如果需要去除此类的错误,还需要进一步修改正则表达式。

[置顶] 正则表达式应用:匹配IP地址的更多相关文章

  1. 正则表达式通用匹配ip地址及主机检测

    在使用正则表达式匹配ip地址时如果不限定ip正确格式,一些场景下可能会产生不一样的结果,比如ip数值超范围,ip段超范围等,在使用正则表达式匹配ip地址时要注意几点: 1,字符界定:使用  \< ...

  2. python中利用正则表达式匹配ip地址

    现在有一道题目,要求利用python中re模块来匹配ip地址,我们应如何着手? 首先能想到的是ip地址是数字,正则表达式是如何匹配数字的呢? \d或[0-9] 对于这个问题,不要一下子上来就写匹配模式 ...

  3. python匹配ip地址

    ip地址是用3个'.'号作为分隔符,分割4个数字,每个数字的取值在[0,255],一般日志文件中的ip地址都是有效的ip地址,不需要我们再去验证,因此,若从日志文件中提取ip,那么可以简单写成这样: ...

  4. 使用正则表达式匹配IP地址

    IP地址分为4段,以点号分隔.要对IP地址进行匹配,首先要对其进行分析,分成如下部分,分别进行匹配:   第一步:地址分析,正则初判 1.0-9 \d 进行匹配 2.10-99 [1-9]\d 进行匹 ...

  5. python 正则表达式匹配IP地址

    一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...

  6. 正则表达式匹配IP地址

    '''首先分析ip地址的特征:255.255.255.255,前三位的数字处理基本一致 1位: 0-9              \d2位:10-99         [1-9]\d3位:100-19 ...

  7. 正则表达式验证合法的IP地址

    IPv4地址 最初设计互联网络时,为了便于寻址和层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID.同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上的 ...

  8. shell正则匹配IP地址

    IP分成5大类: A类地址 ⑴ 第1字节为网络地址,其它3个字节为主机地址. ⑵ 范围:1.0.0.1—126.155.255.254 ⑶ 私有地址和保留地址: ① 10.X.X.X是私有地址(只能在 ...

  9. JS正则表达式端口号,IP地址

    端口号:65535 正则:/^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6 ...

随机推荐

  1. AVL旋转树

    执行插入操作可能出现不平衡的情况,当平衡二叉树.AVL这树是一种自平衡二叉树,使二叉树又一次保持平衡.而且查找.插入和删除操作在平均和最坏情况下时间复杂度都是O(log n) AVL树的旋转一共同拥有 ...

  2. Qt 图形特效(Graphics Effect)介绍

    原文链接:Qt 图形特效(Graphics Effect)介绍 QGraphicsEffect也是Qt-4.6引入的一个新功能.它让给图形元素QGraphicsItem增加更佳视觉效果的编程变得非常简 ...

  3. js 操作剪切板

    1.IE浏览器 window.clipboardData: setData() //设置值 getData()//获取值 clearData()//删除值 /******* ** IE 浏览器下支持w ...

  4. Java数据输入

    以下是数据输入实例: //以下是数据输入实例 import java.util.Scanner;//导入java.util.Scanner,Scanner首字母大写 public class Test ...

  5. SSH公钥私钥安全通讯原理

    客户端在访问服务器的时候,防止通讯信息被截取,进行加密处理通讯. 在服务器上会有两把钥匙,公钥和私钥.公钥可以对所有公开,私钥只有服务器自己知道, 并且公钥产生的密文只能通过私钥才能解开 1:客户端发 ...

  6. wcf wpf

    转 http://blog.csdn.net/thunder09/article/details/5792157 WPF就是所谓下一代Windows界面层技术,我觉得还有满有前途的.不过Vista发布 ...

  7. 深入javascript——构造函数和原型对象

    常用的几种对象创建模式 使用new关键字创建 最基础的对象创建方式,无非就是和其他多数语言一样说的一样:没对象,你new一个呀! var gf = new Object(); gf.name = &q ...

  8. Render和template?

    Template是一个模板. render = web.template.render('templates/') 这会告诉web.py到你的模板目录中去查找模板.然后把 index.GET改成: 告 ...

  9. CSS注意事项

    1.定义样式不能就加:隔开 当有定义的css样式并没有起作用的时候看看定义该样式前边有没有加“;”的如 p{};div{}

  10. 转载: jQuery事件委托( bind() \ live() \ delegate()) [委托 和 绑定的故事]

    转载:http://blog.csdn.net/zc2087/article/details/7287429 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery ...