Python:判定IP地址合法性的三种方法
IP
IP合法性校驗是開發中非常常用的,看起來很簡單的判斷,作用確很大,寫起來比較容易出錯,今天我們來總結一下,看一下3種常用的IP地址合法性校驗的方法。
IPv4的ip地址格式:(1255).(0255).(0255).(0255)
正則表達式判定法
最簡單的實現方法是構造一個正則表達式。判斷用戶的輸入與正則表達式是否匹配。若匹配則是正確的IP地址,否則不是正確的IP地址。
下面給出相對應的驗證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)$\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之間的任意一個數字
.的意思是.點要轉義(特殊字符類似,@都要加\轉義)
代碼如下:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' 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字符串拆解法
把ip地址當作字符串,以.為分隔符分割,進行判斷
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' #!/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之間 passelse: print "check ip address failed!"sys.exit() i+=1else: 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函數引入IPy類庫
IPy庫是一個處理IP比較強大的第三方庫。涉及到計算大量的IP地址,包括網段、網絡掩碼、廣播地址、子網數、IP類型等別擔心,Ipy模塊拯救你。Ipy模塊可以很好的輔助我們高效的完成IP的規劃工作。 IPy庫的安裝方法請根據自己的操作系統自行查找,有很多詳細例子。
import IPy def is_ip(address): try: IPy.IP(address) return True except Exception as e: return False總結
三種方法都能夠準確的判斷出ip(IP V4)地址的合法性, 正則表達式代碼量少, 邏輯簡單, 但是正則表達式繁瑣, 字符串判定法容易理解,但是代碼量大, 使用類庫,判斷簡潔,但是需要引入額外的庫。各有利弊, 使用時自行選擇即可。
總結
以上是生活随笔為你收集整理的Python:判定IP地址合法性的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python | 5分钟搞定 Pytho
- 下一篇: Python基础语法精心总结!看完都知道