在python 2.7中使用正则表达式进行IP匹配

时间:2017-11-29 07:13:09

标签: python-2.7

我需要一些帮助来修复验证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] + $

2 个答案:

答案 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 "