【发布时间】:2020-03-24 11:07:51
【问题描述】:
我正在尝试编写代码来使用正则表达式确定 ipv4 地址是否正确,但我似乎无法找出问题所在。
import re
pattern=re.compile('([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])')
ip=['17.255.16.45','255.255.255.255','0.0.0.0','0.14.255.14','2555.2564.0.3','0.3.255']
for i in range (len(ip)):
if re.search(pattern,ip[i]):
print(ip[i],'ok')
else:
print(ip[i],"nope")
【问题讨论】:
-
查看这个正则表达式测试器:regex101.com
-
这是一项勇敢的努力,但我认为您可能在这里对正则表达式施加了过多的负担。如果您想对格式严格要求,我会使用正则表达式来确保数字不以零开头(除非它只有 0),然后稍后在代码中检查值是否正常(问题本身仍然有效不过)。
-
正则表达式很酷,而且很好学 - 但这是重新发明轮子,还有一个“XY”问题:您需要验证 IP 的字符串,而不是“修复正则表达式”
标签: python expression ipv4