判斷IP位址是否合理

2021-10-25 00:01:28 字數 2214 閱讀 6470

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

下面給出相對應的驗證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之間的任意乙個數字

.的意思是.點要轉義(特殊字元類似,@都要加\轉義)

import re

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)$'

)if compile_ip.match(ipaddr)

:return

true

else

:return

false

方法2: 字串拆解法

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

#!/usr/bin/python 

import os,sys

defcheck_ip

(ipaddr)

:import sys

addr=ipaddr.strip(

).split(

'.')

#切割ip位址為乙個列表

#print addr

iflen

(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]

<=

255and addr[i]

>=0:

#每個引數值必須在0-255之間

pass

else

:print

"check ip address failed!"

sys.exit(

) i+=

1else

: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庫的安裝請自行查詢。

import ipy 

defis_ip

(address)

:try

: ipy.ip(address)

return

true

except exception as e:

return

false

總結

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

判斷IP位址是否合法

1 字串切割判斷 def legalip ip ip ip.split m len ip if m 4or not ip 0 isdigit orint ip 0 0or int ip 0 255 print illegal else for i in range 1 m if ip i isdig...

c 判斷IP位址是否合法

以字串形式輸入n行ip位址,格式為a.b.c.d,每個數字均在 0,255 之間,判斷ip位址是否合法,是輸出yes,否輸出no。輸入樣例 21.2.3.4 172.168.0.300 輸出樣例 yesno 注意 string轉int需要標頭檔案 include include using name...

華為oj 判斷IP位址是否合法

include includeusing namespace std int valid digit char ip str return 1 int is valid ip char ip str else return 0 valid ip string must contain 3 dots ...