标题:使用Python判断IP地址合法性的方法实例
介绍
在开发网络应用时,我们通常需要判断用户输入的IP地址是否合法,这其中就需要用到Python计算机语言。本篇文章将详细讲解使用Python判断IP地址合法性的方法,并提供两个实例供大家参考。
IP地址的格式
IP地址是一个由32位二进制数组成的四位数组,每个数用小数点隔开。例如:192.168.0.1。IP地址可以分为A、B、C、D、E五个类别。
步骤
步骤1:使用正则表达式校验IP地址的格式
首先,判断输入的IP地址格式是否正确。这里我们使用Python的正则表达式模块re进行匹配判断。使用re模块可以在短时间内完成复杂的字符串匹配操作。
代码示例:
import re
def is_valid_ip(ip):
"""
:param ip: 待校验的IP地址
:return: 如果符合IP地址格式,则返回True,否则返回False
"""
pattern = re.compile(r'^([0-9]{1,3}\.){3}[0-9]{1,3}$')
if pattern.match(ip):
return True
return False
这里我们使用了Python的re模块创建了一个正则表达式对象pattern。然后使用match()函数来验证IP地址的格式是否符合要求,如果符合则返回True,否则返回False。
步骤2:判断IP地址所处的类别
接下来,我们需要判断IP地址所处的类别,即判断IP地址的子网掩码前缀是多少位。
代码示例:
def subnet_mask(ip):
"""
:param ip: 待校验的IP地址
:return: 返回IP地址的子网掩码前缀数,如果不在分类范围内则返回None
"""
if not is_valid_ip(ip):
return None
octets = ip.split('.')
first_octet = int(octets[0])
if first_octet >= 1 and first_octet <= 126:
return 8
elif first_octet >= 128 and first_octet <= 191:
return 16
elif first_octet >= 192 and first_octet <= 223:
return 24
return None
这里我们首先调用上一步骤中定义的is_valid_ip()函数,判断IP地址是否符合格式要求。然后我们使用split()函数将IP地址以“.”进行拆分,并将第一个分段转换成整数。我们根据第一个分段所在的范围来确定IP地址的类别。
示例1:判断IP地址的类别
假设我们输入的IP地址是192.168.0.1,我们可以通过调用subnet_mask()函数来判断该IP地址所属的子网掩码前缀。运行如下代码:
print(subnet_mask('192.168.0.1'))
输出结果为:
24
这表明,我们输入的IP地址192.168.0.1所处的子网掩码前缀为24位,即属于C类IP地址。
步骤3:判断IP地址是否属于私有IP地址范围
私有IP地址是指保留给局域网使用的IP地址,不允许在公网上使用。私有IP地址分为三个类别,分别是A、B、C类。A类私有IP地址的范围是10.0.0.0/8,B类私有IP地址的范围是172.16.0.0/12~172.31.0.0/16,C类私有IP地址的范围是192.168.0.0/16。
代码示例:
def is_private_ip(ip):
"""
:param ip: 待校验的IP地址
:return: 如果是私有IP地址,则返回True,否则返回False
"""
if not is_valid_ip(ip):
return False
octets = ip.split('.')
first_octet = int(octets[0])
if first_octet == 10:
return True
elif first_octet == 172 and (16 <= int(octets[1]) <= 31):
return True
elif first_octet == 192 and int(octets[1]) == 168:
return True
return False
这里我们使用了之前定义的is_valid_ip()函数,判断IP地址是否符合格式规范。然后我们再根据IP地址的第一个分段和第二个分段的值来判断是否属于私有IP地址范围。
示例2:判断IP地址是否为私有IP地址
假设我们输入的IP地址是172.16.0.1,我们可以通过调用is_private_ip()函数来判断该IP地址是否为私有IP地址。运行如下代码:
print(is_private_ip('172.16.0.1'))
输出结果为:
True
这表明,我们输入的IP地址172.16.0.1属于私有IP地址范围。
结论
本文介绍了使用Python判断IP地址合法性的方法,包括如何使用正则表达式校验IP地址的格式、判断IP地址所属的类别,以及判断IP地址是否属于私有IP地址范围。两个示例让大家更好地理解了Python如何判断IP地址。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python判断IP地址合法性的方法实例 - Python技术站