我试图验证输入以查看其是否为有效的IP地址(可以是部分IP地址)。

可接受的输入:172,172.112,172.112.113,172.112.113.114

不能接受的输入:1724,172.11113等

这是我创建的用于对其进行检查的函数(但是它会验证无法接受的输入,例如1724,我似乎无法修复..请帮助)

def ipcheck(ip):
    ippattern_str = '(([1-2]?[\d]{1,2}\.?){0,1}(\.[1-2]?[\d]{1,2}){0,1}(\.[1-2]?[\d]{1,2}\.){0,1}(([1-2]?[\d]{1,2}[\D\W]*)'
    ippattern = re.compile(ippattern_str)
    # ippattern is now used to call match, passing only the ip string
    global matchip
    matchip = ippattern.match(ip)
    return matchip


ip = sys.argv[1]
ipcheck(ip)

print matchip


我觉得也许我需要正确使用锚点?我已经尽我所能尝试了一切,将不胜感激。

最佳答案

这个正则表达式可以解决问题:

^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){0,3}$


它确保给定的数字在正确的范围内(0-255),并且可以包含1-4个部分。

您可以在此处查看其运行情况:http://regexr.com?2va3j

关于python - python IP验证REGex验证全部和部分IP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8269376/

10-11 06:16