You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:45:01