import re
def is_valid_ip(ip): # 定义IPv4的正则表达式 ipv4_pattern = re.compile(r'^(\d{1,3}\.){3}\d{1,3}$')
# 定义IPv6的正则表达式 ipv6_pattern = re.compile(r'^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|"' r'([0-9a-fA-F]{1,4}:){1,7}:|"' r'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|"' r'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|"' r'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|"' r'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|"' r'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|"' r'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|"' r':((:[0-9a-fA-F]{1,4}){1,7}|:)|"' r'fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|"' r'::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|' r'(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(' r'25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|"' r'([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|' r'(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(' r'25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$')
# 判断是否为有效的IPv4或IPv6地址 if ipv4_pattern.match(ip) or ipv6_pattern.match(ip): return True else: return False
# 测试 ip_address = "192.168.1.1" if is_valid_ip(ip_address): print(f"{ip_address} 是有效的IP地址") else: print(f"{ip_address} 不是有效的IP地址")
|