gpt4 book ai didi

python - 用于检查 IP 是否有效的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:45 27 4
gpt4 key购买 nike

我想知道是否可以将正则表达式中的值与 Python 中的正则表达式系统进行比较。匹配 IP 的模式很容易,但是每 1-3 位数字不能超过 255,这就是我有点难过的地方。

最佳答案

这里不需要正则表达式。一些背景:

>>> import socket
>>> socket.inet_aton('255.255.255.255')
'\xff\xff\xff\xff'
>>> socket.inet_aton('255.255.255.256')
Traceback (most recent call last):
File "<input>", line 1, in <module>
error: illegal IP address string passed to inet_aton
>>> socket.inet_aton('my name is nobody')
Traceback (most recent call last):
File "<input>", line 1, in <module>
error: illegal IP address string passed to inet_aton

所以:

import socket

def ip_address_is_valid(address):
try: socket.inet_aton(address)
except socket.error: return False
else: return True

请注意,像“127.1”这样的地址在您的机器上可能是可以接受的(有些系统,包括 MS Windows 和 Linux,其中缺少的八位字节被解释为零,因此“127.1”等同于“127.0.0.1”,并且“10.1.4' 等同于 '10.1.0.4')。如果您需要始终有 4 个八位字节,请将最后一行从:

else: return True

进入:

else: return address.count('.') == 3

关于python - 用于检查 IP 是否有效的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com