python判断ip4合法性

方法一:按照字符串拆解

def ip4_check(ip):
    ip_4 = ip.strip().split(".")   # 去掉前后空格,按.切割IP地址为一个列表
    if len(ip_4) == 4:  # 判断IP是否为4位数
        for i in range(4):
            # 判断IP是否为0-255的整数
            if ip_4[i].isdigit() and ip_4[i] == str(int(ip_4[i])) and 0 <= int(ip_4[i]) <= 255:
                continue
            else:
                print('IP4地址必须由0-255的整数组成')
                exit()
        print('{}是合法的IP4地址'.format(ip))
    else:
        print("IP4地址应该由4个字节组成,以'.'分割!")
        exit()

 

方法二:使用IPy包

def is_ip(ip):
    import IPy
    try:
        IPy.IP(ip)
        return True
    except Exception as e:
        return False

 但是,如上图,IPy包不足4位也会判断为True,所以最好还是先校验下位数

def is_ip4(ip):
    ip_4 = ip.strip().split(".")  # 去掉前后空格,按.切割IP地址为一个列表
    if len(ip_4) == 4:  # 判断IP是否为4位数
        import IPy
        try:
            IPy.IP(ip)
            return True
        except Exception as e:
            return False
    return False

 

 

方法三: 使用python自带方法

def _check_ip4(ip):
    import socket
    try:
        socket.inet_aton(ip)
        return True
    except socket.error:
        return False

但是,也有跟IPy一样的问题 

 

方法四:使用正则表达式

def check_ip4(ip):
    import re
    compile_ip = re.compile("^((?:(2[0-4]\d)|(25[0-5])|([01]?\d\d?))\.){3}(?:(2[0-4]\d)|(255[0-5])|([01]?\d\d?))$")
    if compile_ip.match(ip):
        return True
    else:
        return False

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值