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";
};

 


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值