• [置顶] 正则表达式应用:匹配IP地址


         都知道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的正则表达式是:1d{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})|(1d{2,2})|(2[0-4][0-9])|(25[0-5])

      2再组合数值和点号

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

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

       如果需要验证IP地址的话,只需要加上前缀^,后缀$,正则表达式为:^(((d{1,2})|(1d{2,2})|(2[0-4][0-9])|(25[0-5])).){3,3}((d{1,2})|(1d{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})|(1d{2,2})|(2[0-4][0-9])|(25[0-5])).){3,3}((d{1,2})|(1d{2,2})|(2[0-4][0-9])|(25[0-5]))$");验证IP的正则表达式
                
                Regex reg = new Regex(@"(?<ip>(((d{1,2})|(1d{2,2})|(2[0-4][0-9])|(25[0-5])).){3,3}((d{1,2})|(1d{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,如果需要去除此类的错误,还需要进一步修改正则表达式。

  • 相关阅读:
    SVN打tag
    validate命令---rman进行备份和回复的验证
    通达OA 小飞鱼工作流在线培训教程(一)HTML基础介绍
    How to improve Java&#39;s I/O performance( 提升 java i/o 性能)
    mybatis批量插入、批量删除
    Java測试覆盖率工具----Cobertura,EclEmma
    Java Secret: Using an enum to build a State machine(Java秘术:用枚举构建一个状态机)
    灵活数据源的固定行列交叉报表的制作
    HDFS学习笔记(1)初探HDFS
    JPEG压缩图像超分辨率重建算法
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3306225.html
Copyright © 2020-2023  润新知