Python 验证 IP 地址
IP是互联网协议的缩写,是分配给每台连接到互联网的计算机的唯一地址。有两个版本的IP地址,名为IPv4
和IPv6
。
IPv4以点阵十进制符号表示,由四个八位数组成,每个八位数包含一个从0到255的数字。IPv6地址包含八组四位十六进制数字,每组代表16位。
冒号分隔各组数字(:
)。在本指南中,我们将验证一个IPv4地址。
在 Python 中验证一个 IP 地址
验证一个 IP 地址意味着检查输入的 IP 是否有效。
比如说:
Input: 192.168.52.124
Output: Valid IP address
Input: 656.1.2.3
Output: Invalid IP address
使用ipaddress
模块在 Python 中验证 IP 地址
ipaddress
是Python中的一个模块,用于根据IP地址的类型(IPv4或IPv6)来检查和分类。它还执行不同的操作,如算术操作、比较等。
这个模块有一个名为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
在Python中使用RegEx.search()
方法来验证一个IP地址
另一种验证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
在Python中手动验证IP地址
我们可以不用任何内置库的正则表达式来验证一个IP地址。我们做了一个函数,在下面的代码中通过检查这三个条件来验证 IP 地址。
如果代码中出现以下任何条件,IP将是无效的True
。
- 八位数不是四个。
- 任何一个八位数包含除整数以外的任何东西。
- 任何一个八位字节内的数字都不在0-255的范围内。
示例代码:
#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'