Python 验证 IP 地址

IP 代表互联网协议,是分配给每台连接到互联网的计算机的唯一地址。 IP 地址有两个版本,即 IPv4 和 IPv6。

IPv4 采用点分十进制表示法,由 4 个八位位组组成,每个八位位组包含 0 到 255 之间的数字。 IPv6 地址包含 8 组,每组 4 个十六进制数字,每组代表 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 地址进行检查和分类。 它还执行不同的操作,例如算术运算、比较等。

该模块有一个名为 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

使用 RegEx.search() 方法在 Python 中验证 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 无效。

  1. 八位位组的数量不是四个。
  2. 任何八位字节都包含除整数以外的任何内容。
  3. 八位位组内的任何数字都在 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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迹忆客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值