IPv4 和 IPv6 正则表达式

IPv4 和 IPv6 正则表达式

Pv4 地址例如,”192.168.0.2“,为 . 分割的4段数字,数字范围为 0 - 255,而我们的正则表达式需要匹配的就是 0 - 255,首先我们对这一区间进行拆分: 

1. 0 - 9 只有一位数字,正则表达式:\d; 

2. 10 - 99 二位数,十位数1 - 9,个位数 0 - 9,正则表达式:[1-9]\d; 

3. 100 - 199,百位数 1,十位数个位数均为 0 - 9,正则表达式:1\d\d; 

4. 200 - 249,百位数 2,十位数 0 - 4,个位数 0 - 9,正则表达式:2[0-4]\d; 

5. 250 - 255,百位数 2,十位数5,个位数 0 - 5,正则表达式:25[0-5]


步骤4、5可以进行一次整合:2([0-4]\d|5[0-5])(200 - 255)。


综上在结合 . 这个连接符,在IP最后手动填上一个 . 就可以重复4次,最后的正则表达式为:

  var ipv4 = /^()(\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.){4}$/;
return ipv4.test(IP + ".");

IPv6 正则规则

  IPv6 地址例如,”2001:0db8:85a3:0000:0000:8a2e:0370:7334“,为 : 分割的8段数字,每段数字最多4位,最少1位,每位可由 0-9数字、a-f 小写字母、A-F 大写字母组成,与 IPv4 一样为了简略正则表达式,在IP后手动填上一个 :。

var ipv6 = /^(([\da-fA-F]{1,4}):){8}$/
return ipv6.test(IP + ":");

原题来自 leetcode 第468题(Validate IP Address),题意为设计一个函数检测 IP 是 IPv4 还是 IPv6。

/**
 * @param {string} IP
 * @return {string}
 */
var validIPAddress = function(IP) {
    var ipv4 = /^((\d|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\.){4}$/;
    var ipv6 = /^(([\da-fA-F]{1,4}):){8}$/
    return ipv4.test(IP + ".") ? "IPv4" : ipv6.test(IP + ":") ? "IPv6" : "Neither";
};



————————————————

版权声明:本文为CSDN博主「zwkkkk1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zwkkkk1/article/details/80391465


回复列表



回复操作

正在加载验证码......

请先拖动验证码到相应位置

发布时间:2020-05-10 22:29:49

修改时间:2020-05-10 22:29:49

查看次数:10

评论次数:0