Python给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例【杭州多测师_王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))
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 有效不可用,回环地址