Python 判定IP位址合法性的四種方法

2021-10-11 19:03:59 字數 2938 閱讀 5049

你好,我是悅創。

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

先了解 ipv4 的 ip 格式,它的形式應該為:(1255).(0255).(0255).(0255)

最簡單的實現方法是構造乙個正規表示式。判斷使用者的輸入與正規表示式是否匹配。若匹配則是正確的ip位址,否則不是正確的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)$

\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

# !/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函式

ipy 庫是乙個處理ip比較強大的第三方庫。涉及到計算大量的 ip 位址,包括網段、網路掩碼、廣播位址、子網數、ip 型別等別擔心,ipy 模組拯救你。ipy 模組可以很好的輔助我們高效的完成 ip 的規劃工作。

ipy 庫的安裝方法請根據自己的作業系統自行查詢,有很多詳細例子。

import ipy

defis_ip

(address)

:try

: ipy.ip(address)

return

true

except exception as e:

return

false

import socket

defcheckip

(strip)

:try

: socket.inet_aton(strip)

return

true

except socket.error:

return

false

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

IP位址合法性校驗

我們一般用cidr來表示一段ip位址。cidr是這樣乙個字串 先是乙個ipv4的位址的字串表示,加乙個 分隔符,再加乙個13 含 到27 含 之間的整數。比如 192.128.1.134 25 表示從192.128.1.128 含 到192.128.1.255 含 的128個ip位址。前的字段 19...

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

ip合法性校驗是開發中非常常用的,看起來很簡單的判斷,作用確很大,寫起來比較容易出錯,今天我們來總結一下,看一下3種常用的ip位址合法性校驗的方法。方法1 正規表示式判定法 最簡單的實現方法是構造乙個正規表示式。判斷使用者的輸入與正規表示式是否匹配。若匹配則是正確的ip位址,否則不是正確的ip位址。...

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

正規表示式判定法 最簡單的實現方法是構造乙個正規表示式。判斷使用者的輸入與正規表示式是否匹配。若匹配則是正確的ip位址,否則不是正確的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...