扣丁学堂Python培训之如何判定IP地址合法性实例源码
IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法。
IPv4的ip地址格式:(1~255).(0~255).(0~255).(0~255)
方法1:正则表达式判定法
最简单的实现方法是构造一个正则表达式。判断用户的输入与正则表达式是否匹配。若匹配则是正确的IP地址,否则不是正确的IP地址。
下面给出相对应的验证ip的正则表达式:
^(1d{2}|2[0-4]d|25[0-5]|[1-9]d|[1-9]).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d)$
d表示0~9的任何一个数字
{2}表示正好出现两次
[0-4]表示0~4的任何一个数字
|的意思是或者
1d{2}的意思就是100~199之间的任意一个数字
2[0-4]d的意思是200~249之间的任意一个数字
25[0-5]的意思是250~255之间的任意一个数字
[1-9]d的意思是10~99之间的任意一个数字
[1-9])的意思是1~9之间的任意一个数字
.的意思是.点要转义(特殊字符类似,@都要加转义)
代码如下:
importre
defcheck_ip(ipAddr):
compile_ip=re.compile("^(1d{2}|2[0-4]d|25[0-5]|[1-9]d|[1-9]).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d).(1d{2}|2[0-4]d|25[0-5]|[1-9]d|d)#39;)
ifcompile_ip.match(ipAddr):
returnTrue
else:
returnFalse
方法2:字符串拆解法
把ip地址当作字符串,以.为分隔符分割,进行判断
代码:
#!/usr/bin/python
importos,sys
defcheck_ip(ipAddr):
importsys
addr=ipAddr.strip().split(".")#切割IP地址为一个列表
#printaddr
iflen(addr)!=4:#切割后列表必须有4个参数
print"checkipaddressfailed!"
sys.exit()
foriinrange(4):
try:
addr[i]=int(addr[i])#每个参数必须为数字,否则校验失败
except:
print"checkipaddressfailed!"
sys.exit()
ifaddr[i]<=255andaddr[i]>=0:#每个参数值必须在0-255之间
pass
else:
print"checkipaddressfailed!"
sys.exit()
i+=1
else:
print"checkipaddresssuccess!"
iflen(sys.argv)!=2:#传参加本身长度必须为2
print"Example:%s10.0.0.1"%sys.argv[0]
sys.exit()
else:
check_ip(sys.argv[1])#满足条件调用校验IP函数
方法3:引入IPy类库
IPy库是一个处理IP比较强大的第三方库
IPy库的安装请自行查找。
importIPy
defis_ip(address):
try:
IPy.IP(address)
returnTrue
exceptExceptionase:
returnFalse
总结
三种方法都能够准确的判断出ip(IPV4)地址的合法性,正则表达式代码量少,逻辑简单,但是正则表达式繁琐,字符串判定法容易理解,但是代码量大,使用类库,判断简洁,但是需要引入额外的库。各有利弊,使用时自行选择即可。
最后想要了解更多关于Python发展前景趋势,请关注扣丁学堂python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供最新的Python视频教程系统,通过千锋扣丁学堂金牌讲师在线录制的Python视频教程课程,让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:816572891。
K12面临新政寒战?原子同学少儿编程助力赋能升级!原子同学双减政策强势出台2021年7月24日,中共中央办公厅国务院办公厅印发关于进一步减轻义务教育阶段学生作业负担和校外培训负担的意见,其中明确了学科类培训机构的治理方法,全面规范校外培训
神兽归笼倒计时!不妨看看这份开学收心指南吧原子同学新学期开学在即,全国多地教育局结合疫情防控形势,陆续发布了秋季学期返校要求和时间,中高风险地区也明确作出了学校暂缓开学学生暂缓返校的安排。北京目前,北京大中小学和幼儿园将在9月1日
其实没那么智能!一位智能家居用户的内心独白近年来,在谷歌亚马逊以及苹果等众多全球科技巨头的带动下,智能家居迎来了一波发展热潮,也由此带动了智能家居的消费者认知度的快速提升。例如,智能音箱智能锁智能家电等众多智能家居产品以及
新一代安卓机皇竟然是它?90后的朋友都知道三星手机曾经的辉煌,当初硬刚苹果不分高低,可现在三星手机在国内的销量却是很一般,可能你现在身边都没人用三星手机了。但是三星手机的全球销量却不低,在手机行业里面三星
6。18手机价格大跳水,含泪发誓以后再也不买首发iqoo7,小米11的有力对手,也是6。18的跳水健将。1月份发布的时候,iqoo7的12256版本,4198起。到了6。18的时候,价格是2998,不到半年的时候降价了1200。
第一台苹果手机竟然长这样?1欢迎来到小东老师的数码课堂,今天来给大家讲一下苹果手机的发展历程,时至今日相信大家对苹果这个品牌都不陌生了,上至70岁的老大爷手中6年前发布的iphone6s,下至10岁小朋友手
各方面分析造成C盘爆满的原因!做好这些可以有效避免无论是在生活中还是在工作中,C盘都是至关重要的存在!C盘不仅存放着系统,还存放着其他重要的数据,所以,对于C盘的内存而言,自然是越多越好。但是随着我们使用电脑的时间越长,产生的文件
三星淡出我们的视野,原因竟然是现在要说安卓机皇,其中肯定会有人说三星S20Ultra,这是三星于今年一月14号发布的一款手机,配置没得说,高通晓龙888的处理器,是目前行业最高的,后置1200万像素超广角镜头1
opporeno6,颜值大魔王的逆袭之路oppo的reno系列,从开始的扑街到底,到后期的逐渐站稳市场。可谓是交出了一个不错的答卷。reno1的狗头铡升降摄像头的失败。到二代的继续扑街。reno3开始,reno系列的定位
安卓最强机王竟然是它?苹果手机和安卓手机哪个更好用,一直是人们热议的话题,至今也没能争个所以然来,但是当我们问谁是现在最受欢迎的手机?都会想到苹果手机,那你可知道安卓最强机王呢?华为mate40Pro1
起售价5499元?iPhone13计划9月首发首批订单或破亿参考消息网7月19日报道目前,苹果公司正在全力准备iPhone13系列的发布。与上一代机型一样的是,iPhone13也会有4个机型,预计产量将高达2。23亿部。美国权威投资机构We