Python给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例【杭州多测师_王sir】

发布时间 2023-09-09 10:33:01作者: 多测师_王sir

ipv4地址的格式:(1~255).(0 ~255).(0 ~255).(0 ~255)

1. 正则表达式

import re

def check_ip(one_str):

    compile_ip = re.compile('^(([1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$')
    if compile_ip.match(one_str):
        return True
    else:
        return False

if __name__ == '__main__':

    ip_list = ['', '172.31.137.251', '100.10.0.1000', '1.1.1.1', '12.23.13', 'aa.12.1.2', '12345678', '289043jdhjkbh']

    for one_str in ip_list:
    
if check_ip(one_str): 
            print('{0} is a legal ip address!'.format(one_str))
        else:
            print('{0} is not a legal ip address!'.format(one_str))
2. 字符串
def check_ip(one_str):

    if '.' not in one_str:
        return False
    elif one_str.count('.') != 3:
        return False
    else:
        flag = True
        one_list = one_str.split('.')
        for one in one_list:
            try:
                one_num = int(one)
                if one_num >= 0 and one_num <= 255:
                    pass
                else:
                    flag = False
            except:
                flag = False
        return flag

if __name__ == '__main__':

    ip_list = ['', '172.31.137.251', '100.10.0.1000', '1.1.1.1', '12.23.13', 'aa.12.1.2', '12345678', '289043jdhjkbh']

    for one_str in ip_list:
        if check_ip(one_str):  #字符串方法
            print('{0} is a legal ip address!'.format(one_str))
        else:
            print('{0} is not a legal ip address!'.format(one_str))

3. 测试用例

有效可用的IP地址
A类 1.0.0.0 ~126.255.255.254
A私有 10.0.0.0 -10.255.255.254
B类 128.0.0.0 -191.255.255.254
B私有 172.16.0.0 -172.31.255.254
C类 192.0.0.0 -223.255.255.254
C私有 192.168.0.0-192.168.255.254
windows自动分配 169.254.0.0-169.254.255.254
有效但不可用的IP地址
D 224.0.0.0 -239.255.255.254
E 240.0.0.0 -255.255.255.254
全网 0.x.x.x, x.x.x.0
广播 x.x.x.255
回环 127.0.0.0 -127.255.255.254
输入 结果
64.11.22.33 有效可用
10.12.13.14 有效可用,不能直接访问公网
151.123.234.56 有效可用
172.20.123.56 有效可用,不能直接访问公网
192.127.35.65 有效可用
192.168.128.128 有效可用,不能直接访问公网
169.254.15.200 有效可用,不能直接访问公网
224.1.2.3 有效不可用,超过有效范围(D类)
250.11.22.33 有效不可用,超过有效范围(E类)
0.200.3.4 有效不可用,全网地址
64.11.22.0 有效不可用,全网地址
10.12.13.255 有效不可用,广播地址
127.50.60.70 有效不可用,回环地址