方法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 ...