我需要一些帮助来修复验证IP地址的脚本。
我的计划: -
导入重新
ip_add = raw_input(“输入要验证的IP地址:”)
valid_ip = re.search('^ [1-255] +。[0-255] +。[0-255] +。[0-254] + $',ip_add)
如果valid_ip:
print ip_add, " is valid"
否则:
print ip_add, " is not valid"
输出 输入要验证的IP地址:1.1.1.254 1.1.1.254有效
但它不应该与1.1.1.255匹配,因为最后是[0-254] + $
答案 0 :(得分:0)
由于正则表达式逐个字符地工作,因此恕我直言,或者至少很难匹配特定的数字范围。我建议使用两步验证,在正则表达式匹配后检查允许的范围。
ip_raw = raw_input("Enter IP address to Validate : ")
ip_match = re.match('^(d+).(d+).(d+).(d+)$', ip_raw)
if ip_match:
a,b,c,d = re.groups()
ip_valid = 1 <= a <= 255 and 1 <= b <= 255 and 1 <= c <= 255 and 1 <= d <= 254
答案 1 :(得分:0)
合并所有更改后。 我的验证IP的程序如下: -
import re
ip_add = raw_input("Enter IP address to Validate : ")
ip_match = re.search(r'^(\d+)\.(\d+)\.(\d+)\.(\d+)$', ip_add)
if ip_match:
a,b,c,d = ip_match.groups()
ip_valid = 1 <= int(a) <= 255 and 1 <= int(b) <= 255 and 1 <= int(c) <= 255 and 1 <= int(d) <= 254
if ip_valid:
print ip_add, " is valid IP"
else:
print ip_add, " is not valid IP"
else:
print ip_add, " not valid IP "