如何判断IPv4地址是否合法?IPv4校验规则及程序实现方法
IPv4 地址合法性校验实现方案
以下是Python语言的实现示例,完全匹配给定的校验规则,会对不符合要求的输入返回明确的错误提示:
def validate_ipv4(ip_str: str) -> tuple[bool, str]: # 按英文点号分割分段 segments = ip_str.split('.') # 校验是否为4个分段 if len(segments) != 4: return False, "错误:IPv4地址必须包含恰好4个分段,且仅使用英文点号分隔" for idx, seg in enumerate(segments): # 校验分段是否仅包含数字 if not seg.isdigit(): return False, f"错误:第{idx+1}个分段包含非法字符,仅允许输入0-9的数字" # 校验前导零 if len(seg) > 1 and seg.startswith('0'): return False, f"错误:第{idx+1}个分段存在前导零,不符合要求" # 校验数值范围 seg_val = int(seg) if seg_val < 0 or seg_val > 255: return False, f"错误:第{idx+1}个分段数值超出范围,需在0-255之间" return True, "校验通过:输入为合法IPv4地址" # 测试示例 if __name__ == "__main__": test_cases = [ "192.168.1.1", "192.168.01.1", "256.0.0.1", "192.168.1", "192.168.a.1", "0.0.0.0" ] for case in test_cases: res, msg = validate_ipv4(case) print(f"测试输入「{case}」: {msg}")
实现逻辑说明
- 优先校验分段数量,同时覆盖了分隔符规则:如果输入使用中文句号、空格等非英文点号分隔,
split('.')得到的分段数必然不等于4,会触发对应错误提示 - 逐段校验数字合法性:确保分段没有字母、空格、特殊符号等非法内容
- 前导零校验:仅允许单个0的分段存在,长度大于1的分段不能以0开头
- 数值范围校验:确保每个分段的十进制值在0到255区间内
- 错误提示明确标注出错的分段位置和具体问题,方便快速定位输入错误
内容的提问来源于stack exchange,提问作者Divesh7
相关产品推荐
相关产品推荐

