黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統(tǒng) 2269 0

IP合法性校驗(yàn)是開發(fā)中非常常用的,看起來(lái)很簡(jiǎn)單的判斷,作用確很大,寫起來(lái)比較容易出錯(cuò),今天我們來(lái)總結(jié)一下,看一下3種常用的IP地址合法性校驗(yàn)的方法。

IPv4的ip地址格式:(1~255).(0~255).(0~255).(0~255)

方法1: 正則表達(dá)式判定法

最簡(jiǎn)單的實(shí)現(xiàn)方法是構(gòu)造一個(gè)正則表達(dá)式。判斷用戶的輸入與正則表達(dá)式是否匹配。若匹配則是正確的IP地址,否則不是正確的IP地址。

復(fù)制代碼 代碼如下:

^(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)$

下面給出相對(duì)應(yīng)的驗(yàn)證ip的正則表達(dá)式:

\d表示0~9的任何一個(gè)數(shù)字

{2}表示正好出現(xiàn)兩次

[0-4]表示0~4的任何一個(gè)數(shù)字

| 的意思是或者

1\d{2}的意思就是100~199之間的任意一個(gè)數(shù)字

2[0-4]\d的意思是200~249之間的任意一個(gè)數(shù)字

25[0-5]的意思是250~255之間的任意一個(gè)數(shù)字

[1-9]\d的意思是10~99之間的任意一個(gè)數(shù)字

[1-9])的意思是1~9之間的任意一個(gè)數(shù)字

\.的意思是.點(diǎn)要轉(zhuǎn)義(特殊字符類似,@都要加\\轉(zhuǎn)義)

代碼如下:

            
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
          

方法2: 字符串拆解法

把ip地址當(dāng)作字符串,以.為分隔符分割,進(jìn)行判斷

代碼:

            
#!/usr/bin/python 
import os,sys 
def check_ip(ipAddr): 
    import sys 
    addr=ipAddr.strip().split('.') #切割I(lǐng)P地址為一個(gè)列表 
    #print addr 
    if len(addr) != 4: #切割后列表必須有4個(gè)參數(shù) 
        print "check ip address failed!"
        sys.exit() 
    for i in range(4): 
        try: 
            addr[i]=int(addr[i]) #每個(gè)參數(shù)必須為數(shù)字,否則校驗(yàn)失敗 
        except: 
            print "check ip address failed!"
            sys.exit() 
        if addr[i]<=255 and addr[i]>=0:  #每個(gè)參數(shù)值必須在0-255之間 
            pass
        else: 
            print "check ip address failed!"
            sys.exit() 
        i+=1
    else: 
        print "check ip address success!"
if len(sys.argv)!=2: #傳參加本身長(zhǎng)度必須為2 
    print "Example: %s 10.0.0.1 "%sys.argv[0] 
    sys.exit() 
else: 
    check_ip(sys.argv[1]) #滿足條件調(diào)用校驗(yàn)IP函數(shù)

          

方法3: 引入IPy類庫(kù)

IPy庫(kù)是一個(gè)處理IP比較強(qiáng)大的第三方庫(kù)

IPy庫(kù)的安裝請(qǐng)自行查找。

            
import IPy 
 def is_ip(address): 
  try: 
    IPy.IP(address) 
    return True 
  except Exception as e: 
    return False
          

總結(jié)

三種方法都能夠準(zhǔn)確的判斷出ip(IP V4)地址的合法性, 正則表達(dá)式代碼量少, 邏輯簡(jiǎn)單, 但是正則表達(dá)式繁瑣, 字符串判定法容易理解,但是代碼量大, 使用類庫(kù),判斷簡(jiǎn)潔,但是需要引入額外的庫(kù)。各有利弊, 使用時(shí)自行選擇即可。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論