详解Python判定IP地址合法性的三种方法

周末不加班
周末不加班
发布时间:2026-10-13 | 3人浏览过
原创

本文详解Python中验证IPv4地址合法性的三种常用方法。通过正则表达式实现代码精简,利用字符串分割法逻辑直观,以及引入IPy第三方库简化调用。文章对比了各方案的代码量、复杂度与依赖需求,帮助开发者根据实际场景选择最优方案。

IP地址合法性校验是软件开发中的高频需求。尽管看似基础,但其实际作用重大,且实现时容易因细节疏忽而出错。本文旨在总结并解析三种常用的IP地址合法性校验方案。

IPv4地址的标准格式由四个段组成,每个段的取值范围分别为(1~255)、(0~255)、(0~255)和(0~255)。

方法1:正则表达式判定法

最直接的实现方式是构建一个匹配IPv4格式的正则表达式。通过判断用户输入是否与预设的正则表达式完全匹配,若匹配成功则视为合法IP地址,否则判定为非法。

复制代码 代码如下:

^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$

以下是验证IP地址对应的正则表达式代码:

\d 表示匹配0~9之间的任意单个数字

{2} 表示前面的字符正好出现两次

[0-4] 表示匹配0~4之间的任意单个数字

| 表示逻辑“或”的关系

1\d{2} 表示匹配100~199之间的任意数字

2[0-4]\d 表示匹配200~249之间的任意数字

25[0-5] 表示匹配250~255之间的任意数字

[1-9]\d 表示匹配10~99之间的任意数字

[1-9]) 表示匹配1~9之间的单个数字

\. 表示对特殊字符点号进行转义(类似@等特殊字符均需使用\\进行转义)

具体代码如下:

import re
def check_ip(ipAddr):
  compile_ip=re.compile('^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
  if compile_ip.match(ipAddr):
    return True  
  else:  
    return False

方法2:字符串拆解法

将IP地址视为字符串,以点号(.)为分隔符进行分割,随后对分割后的各部分进行逻辑判断。

相关代码实现如下:

#!/usr/bin/python 
import os,sys 
def check_ip(ipAddr): 
    import sys 
    addr=ipAddr.strip().split('.') #切割IP地址为一个列表 
    #print addr 
    if len(addr) != 4: #切割后列表必须有4个参数 
        print "check ip address failed!"
        sys.exit() 
    for i in range(4): 
        try: 
            addr[i]=int(addr[i]) #每个参数必须为数字,否则校验失败 
        except: 
            print "check ip address failed!"
            sys.exit() 
        if addr[i]<=255 and addr[i]>=0:  #每个参数值必须在0-255之间 
            pass
        else: 
            print "check ip address failed!"
            sys.exit() 
        i+=1
    else: 
        print "check ip address success!"
if len(sys.argv)!=2: #传参加本身长度必须为2 
    print "Example: %s 10.0.0.1 "%sys.argv[0] 
    sys.exit() 
else: 
    check_ip(sys.argv[1]) #满足条件调用校验IP函数

方法3:引入IPy类库

IPy是一个功能强大的处理IP地址的第三方Python库。

关于IPy库的具体安装步骤,请读者自行查阅相关文档。

import IPy 
 def is_ip(address): 
  try: 
    IPy.IP(address) 
    return True 
  except Exception as e: 
    return False

总结

上述三种方法均能准确判断IPv4地址的合法性。正则表达式法代码量少、逻辑简单,但正则表达式本身编写较为繁琐;字符串判定法易于理解,但代码量相对较大;使用类库法判断简洁,但需引入额外依赖。各方案各有优劣,开发者可根据具体需求自行选择。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表