美文网首页
匹配ipv4地址的正则表达式

匹配ipv4地址的正则表达式

作者: tinychen | 来源:发表于2021-03-03 14:16 被阅读0次
    image

    本文主要介绍使用正则表达式匹配ipv4地址。

    1、粗犷匹配

    比较粗犷的匹配方法,直接匹配四组使用了.进行分隔的数字

    \d+\.{3}\d+
    

    但是这样容易把不是ip的也匹配进去,比如说8888.888.88.8这样的也是符合规则的,所以想要尽可能的准确,我们就要进行精细的匹配。

    2、精准匹配所有ip

    首先我们要确定ipv4地址的范围是0.0.0.0255.255.255.255。然后就使用正则表达式逐个字进行匹配。

    首先要匹配0-255这256个数字,由于正则表达式在这里不能直接使用数值大小进行匹配,并且需要尽可能地精确控制数值范围,所以我们将其分为0-910-99100-199200-249250-255一共五个部分:

    ?:                     # 非获取匹配,只匹配但是不获取
    (?:1[0-9][0-9]\.)       # 100-199
    (?:2[0-4][0-9]\.)       # 200-249
    (?:25[0-5]\.)           # 250-255
    (?:[1-9][0-9]\.)        # 10-99
    (?:[0-9]\.)             # 0-9
    

    注意这五个分组都是或|关系,前面三个部分都是0-255加上一个点.,最后的是没有点的.,所以前面的执行三次匹配,最后再加上没有点.的一次,正好就能匹配所有的IP地址

    (?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))
    

    3、匹配局域网IP地址

    局域网ip地址分为三个大的网段,分别是10.x.x.x172.16.0.0—172.31.255.254192.168.x.x,具体匹配思路和上面一样

    10.x.x.x

    10(?:(?:\.1[0-9][0-9])|(?:\.2[0-4][0-9])|(?:\.25[0-5])|(?:\.[1-9][0-9])|(?:\.[0-9])){3}
    

    172.16.0.0—172.31.255.254

    172(?:\.(?:1[6-9])|(?:2[0-9])|(?:3[0-1]))(?:(?:\.1[0-9][0-9])|(?:\.2[0-4][0-9])|(?:\.25[0-5])|(?:\.[1-9][0-9])|(?:\.[0-9])){2}
    

    192.168.x.x

    192\.168(?:(?:\.1[0-9][0-9])|(?:\.2[0-4][0-9])|(?:\.25[0-5])|(?:\.[1-9][0-9])|(?:\.[0-9])){2}
    

    匹配所有局域网IP地址

    (?:(?:10(?:(?:\.1[0-9][0-9])|(?:\.2[0-4][0-9])|(?:\.25[0-5])|(?:\.[1-9][0-9])|(?:\.[0-9])))|(?:172(?:\.(?:1[6-9])|(?:2[0-9])|(?:3[0-1])))|(?:192\.168))(?:(?:\.1[0-9][0-9])|(?:\.2[0-4][0-9])|(?:\.25[0-5])|(?:\.[1-9][0-9])|(?:\.[0-9])){2}
    

    相关文章

      网友评论

          本文标题:匹配ipv4地址的正则表达式

          本文链接:https://www.haomeiwen.com/subject/dbcmfltx.html