跟进Regular expression to match hostname or IP Address?
并使用Restrictions on valid host names作为引用,在Python中匹配/验证主机名/fqdn(完全限定域名)的最可读,简洁的方法是什么?我在下面的尝试中已经回答过,欢迎改进。

最佳答案

import re
def is_valid_hostname(hostname):
    if len(hostname) > 255:
        return False
    if hostname[-1] == ".":
        hostname = hostname[:-1] # strip exactly one dot from the right, if present
    allowed = re.compile("(?!-)[A-Z\d-]{1,63}(?<!-)$", re.IGNORECASE)
    return all(allowed.match(x) for x in hostname.split("."))

确保每个分割市场
  • 包含至少一个字符,最多63个字符
  • 仅包含允许的字符
  • 不能以连字符开头或结尾。

  • 它还避免了双重否定(not disallowed),并且如果hostname.结尾,也可以。如果hostname以多个点结束,它将(并且应该)失败。

    关于python - 验证主机名字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2532053/

    10-13 02:28