IP 代表互联网协议,是分配给每台连接到互联网的计算机的唯一地址。 IP 地址有两个版本,即 IPv4 和 IPv6。
IPv4 采用点分十进制表示法,由 4 个八位位组组成,每个八位位组包含 0 到 255 之间的数字。 IPv6 地址包含 8 组,每组 4 个十六进制数字,每组代表 16 位。
冒号分隔组 (。 在本指南中,我们将验证 IPv4 地址。
验证IP地址意味着检查输入的IP是否有效。
例如:
Input: 192.168.52.124
Output: Valid IP address
Input: 656.1.2.3
Output: Invalid IP address
ipaddress 是 Python 中的一个模块,用于根据 IP 地址的类型(IPv4 或 IPv6)对 IP 地址进行检查和分类。 它还执行不同的操作,例如算术运算、比较等。
该模块有一个名为 ip_address() 的方法,用于验证 IP 地址。 该函数以字符串IP作为输入,如果它能够成功地将字符串IP转换为IPv4或IPv6地址的对象,则意味着输入的IP地址是有效的。
否则,它将引发一个值错误,表明该 IP 似乎不是 IPv4 或 IPv6 地址。 我们在下面的代码中导入了 ipaddress 模块,并将整个代码写入了 try-except 块中。
如果 IP 有效,则不会引发异常,如果无效,则值错误异常将由 except 块处理。
情况 1:对于有效的 IP 地址
#Python 3.x
import ipaddress
try:
ip = ipaddress.ip_address("192.168.1.1")
print("Valid IP Address")
except ValueError:
print("Invalid IP Address")
输出:
#Python 3.x
Valid IP Address
情况 2:IP 地址无效
#Python 3.x
import ipaddress
try:
ip = ipaddress.ip_address("992.168.1.1")
print("Valid IP Address")
except ValueError:
print("Invalid IP Address")
输出:
#Python 3.x
Invalid IP Address
验证 IP 地址的另一种方法是通过正则表达式将其与有效 IP 地址的预定义模式进行匹配。 我们通过调用 re 模块的 search()
方法并传递正则表达式和 IP 作为参数,在以下代码中验证了 IP 地址。
如果 IP 有效,则此方法返回 True。 否则,返回 False。
示例代码:
#Python 3.x
import re
ip = "192.168.2.3"
regex = "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$"
if(re.search(regex, ip)):
print("Valid IP Address")
else:
print("Invalid IP Address")
输出:
#Python 3.x
Valid IP Address
我们可以在没有任何内置库正则表达式的情况下验证 IP 地址。 我们创建了一个函数,通过检查以下代码中的这三个条件来验证 IP 地址。
如果代码中满足以下任一条件,则 IP 无效。
示例代码:
#Python 3.x
def validate_ip_address(ip):
octects = ip.split(".")
if len(octects) != 4:
return "Invalid IP"
for number in octects:
if not isinstance(int(number), int):
return "Invalid IP"
if int(number) < 0 or int(number) > 255:
return "Invalid IP"
return "Valid IP"
validate_ip_address("192.168.-1.1")
输出:
#Python 3.x
'Invalid IP'