詳解Python判定IP位址合法性的三種方法

2021-09-27 12:59:20 字數 4197 閱讀 6325

ip合法性校驗是開發中非常常用的,看起來很簡單的判斷,作用確很大,寫起來比較容易出錯,今天我們來總結一下,看一下3種常用的ip位址合法性校驗的方法。 

方法1: 正規表示式判定法

最簡單的實現方法是構造乙個正規表示式。判斷使用者的輸入與正規表示式是否匹配。若匹配則是正確的ip位址,否則不是正確的ip位址。

複製**

**如下:

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

下面給出相對應的驗證ip的正規表示式:

\d表示0~9的任何乙個數字

表示正好出現兩次

[0-4]表示0~4的任何乙個數字

| 的意思是或者

1\d的意思就是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('^(1\d|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')

ifcompile_ip.match(ipaddr):

returntrue

else:

returnfalse

方法2: 字串拆解法

把ip位址當作字串,以.為分隔符分割,進行判斷

**:#!/usr/bin/python

importos,sys

defcheck_ip(ipaddr):

importsys

addr=ipaddr.strip().split('.')#切割ip位址為乙個列表

#print addr

iflen(addr) !=4:#切割後列表必須有4個引數

print"check ip address failed!"

sys.exit()

foriinrange(4):

try:

addr[i]=int(addr[i])#每個引數必須為數字,否則校驗失敗

except:

print"check ip address failed!"

sys.exit()

ifaddr[i]<=255andaddr[i]>=0:#每個引數值必須在0-255之間

pass

else:

print"check ip address failed!"

sys.exit()

i+=1

else:

print"check ip address success!"

iflen(sys.ar**)!=2:#傳參加本身長度必須為2

print"example: %s 10.0.0.1 "%sys.ar**[0]

sys.exit()

else:

check_ip(sys.ar**[1])#滿足條件呼叫校驗ip函式

方法3: 引入ipy類庫

ipy庫是乙個處理ip比較強大的第三方庫

ipy庫的安裝請自行查詢。?

importipy

defis_ip(address):

try:

ipy.ip(address)

returntrue

exceptexception as e:

returnfalse

總結

三種方法都能夠準確的判斷出ip(ip v4)位址的合法性, 正規表示式**量少, 邏輯簡單, 但是正規表示式繁瑣, 字串判定法容易理解,但是**量大, 使用類庫,判斷簡潔,但是需要引入額外的庫。各有利弊, 使用時自行選擇即可。

IP位址詳解

閘道器dns 一些命令 國際標準組織iso international standard orgazination 定義位址分類 五大類 以ip位址的第一位進行區分 a類 1 126 預設子網掩碼 255.0.0.0 b類 128 191 預設子網掩碼 255.255.0.0 c類 192 223 ...

IP位址詳解

一 ip位址和mac位址 1 mac位址 mac media access control,介質訪問控制 位址,或稱為實體地址,也叫硬體位址,用來定義網路裝置的位置,mac位址是網絡卡出廠時設定的,是固定的 但可以通過在裝置管理器中或登錄檔等方式修改,同一網段內的mac位址必須唯一 mac位址採用十...

IP位址詳解

1.區域網 一般稱為內網 2.簡單區域網的構成 交換機,網線,pc 其他it終端 3.交換機 用來組建內網的區域網裝置 路由器兩口足以 交換機多口連線 家裡的路由器其實是路由器和交換機的雜交品種 4.虛擬機器 vmware 有網絡卡插網線 自定義模式 vmnet 1 19 vmware提供了19個虛...