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 有效不可用,回环地址