验证字符串是否是有效的 IPv4 或 IPv6 地址

IPv4 地址:

  • 每个地址包含4个十进制数
  • 范围为 0 - 255
  • 用(“.”)分割。比如,172.16.254.1
  • IPv4 地址内的数不会以 0 开头

IPv6 地址:由8组16进制的数字来表示,每组表示 16 比特

  • 这些组数字通过 (“:”)分割
    比如 :2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址
  • 可以加入一些以 0 开头的数字,字母可以使用大写,也可以是小写
    比如:2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址
  • 不能因为某个组的值为 0,而使用一个空的组,以至于出现 ( :: ) 的情况
    比如:2001:0db8:85a3::8A2E:0370:7334 是无效的 IPv6 地址
  • 多余的 0 也是不被允许的
    比如:02001:0db8:85a3:0000:0000:8a2e:0370:7334 是无效的
class Solution:
    def solve(self, IP: str) -> str:
        # write code here
        items = []
        if len(IP) == 0:
            return "Neither"
        for i in range(len(IP)):
            if IP[i] == ".":
                items = IP.split(".")
                for key in items:
                    if key.isdigit():
                        if 0 <= int(key) <= 255:
                            for s in key:
                                if s == "0":
                                    return "Neither"
                        else:
                            return "Neither"
                    else:
                        return "Neither"
                return "IPv4"
            elif IP[i] == ":":
                items = IP.split(":")
                for item in items:
                    if item == "" or len(item) > 4:
                        return "Neither"
                    for key in item:
                        if key.isalpha():
                           if key not in("A", "B", "C", "D", "E", "F", "a", "b", "c", "d", "e", "f"):
                               return "Neither"
                return "IPv6"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值