亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > regex > 正文

正則表達式匹配IP的表達式(推薦)

2020-01-20 22:03:35
字體:
來源:轉載
供稿:網友

這里給大家詳細講解一下一個匹配IP地址的正則表達式,

  有關正則方面的知識,會在詳細的講解中提到。

  在講解之前,我先給大家介紹一下,ip地址的生成規則。

  IP地址,是由32位數字二進制轉為四個十進制的字符串組成。

  怎么轉化?下面講解:

      二進制:11111111111111111111111111111111

      分為四部分:11111111.11111111.11111111.11111111

      轉化:2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0=255

      轉為十進制范圍:0~255.0~255.0~255.0~255

      這就是IP地址的范圍。

      根據這個生成IP的規則和范圍,我們可以用正則表達式來匹配出IP地址,但怎么匹配呢?各人有各人的方法,這里我講解一下我的思路。

      根據IP地址的字符串規律,我把匹配IP地址的表達式分為兩部分來考慮。

      第一部分:匹配3個0~255.(注意后面的一個點)

      第二部分:匹配最后的數字0~255

      也就是說,先匹配出 0~255.(注意后面的一個點) 這個字符串,然后重復匹配3次,然后再匹配最后的數字部分0~255。這就是我匹配IP地址的思路。

       首先,我要提一下,正則是沒有辦法做數字運算的,所以,我們無法用數字運算的方式篩選出IP的數字范圍。既然沒法用數字運算的方式篩選出IP的數字范圍,那么我們應該用什么其他方式來篩選這個數字范圍呢?我的思路是分組討論,然后再把這些分組合并起來組成IP的數字范圍。

       ①、假設IP的數字是百位數,那么根據IP的數字范圍,我們可以得出下面幾種情況。假設第一個數字為1,那么這個數字的范圍就為1[0-9][0-9]。這個應該不難理解,就不解釋。

      ②、假設第一個數字為2,那么根據IP數字的范圍規則,這里又要分為兩種情況,為什么?你想想,最大數字是255,當十位數為5時,個位數最大只能為5是吧?而當十位數為0到4時,個位數可以是任意數字對吧?

      所以,這里的兩種情況分別為:

           A、2[0-4][0-9]

           B、25[0-5]

       ③、分析完了百位數的情況,接下來就是十位數的情況了,假如是十位數,那么十位數的前面第一個數不能為零是吧?

所以十位數的情況可以是:[1-9][0-9]

       ④、剩下的就是個位數的情況了,個位數的情況,大家應該很容易得出結論,就是:[0-9]。

       四種情況分析下來,我們得出了IP數字的范圍分組為:

        1[0-9][0-9]

        2[0-4][0-9]

        25[0-5]

        [1-9][0-9]

        [0-9]

       怎么把上面的分組用正則表達式表示出來呢?很簡單,用正則的或符號|和分組符號()就可以了,所以上面的分組正則表達式為:

     (1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9])

        寫到這里,數字的匹配范圍正則表達式已經寫好了,那么根據我前面的思路: 第一部分:匹配3個0~255.(注意后面的一個點)

         第二部分:匹配最后的數字0~255

        我們來匹配IP地址的第一部分,正則表達式如下: 

     (1[0-9][0-9]/.)|(2[0-4][0-9]/.)|(25[0-5]/.)|([1-9][0-9]/.)|([0-9]/.)

   我在每個數字的后面加了一個點就是匹配出0~255.(注意后面的一個點)

         那么怎么重復匹配三次呢?很簡單,我們只要把這五個分組當成整體,再重復匹配三次就行了,正則表達式如下: 

((1[0-9][0-9]/.)|(2[0-4][0-9]/.)|(25[0-5]/.)|([1-9][0-9]/.)|([0-9])/.)){3}

         第一部分已經匹配出來了,接下來就是拼接上第二部分的數字了,數字部分上面已經寫得很清楚了,就不再解釋了,下面是完整的正則表達式:

((1[0-9][0-9]/.)|(2[0-4][0-9]/.)|(25[0-5]/.)|([1-9][0-9]/.)|([0-9]/.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))

      寫到這里,正則匹配IP的表達式已經出來了,不過,這并不是最終的匹配IP的正則表達式,為什么呢?很簡單,正則表達式會對每一個分組都進行捕獲匹配,上面把匹配IP分成了那么多分組,而每一個分組的內容都會被正則所捕獲,那上面不知道已經捕獲多少IP了,呵呵,那么怎么去掉分組的內容呢?很簡單,用這個符號?:

      ?:符號放在()圓括號里面,是捕獲分組,但不捕獲正則表達式的內容的意思。那么,我們把它放到每一個分組里面去,不就去掉了分組的內容了嗎?所以,我們還要給每個分組加上?:,加上后正則如下:

(?:(?:1[0-9][0-9]/.)|(?:2[0-4][0-9]/.)|(?:25[0-5]/.)|(?:[1-9][0-9]/.)|(?:[0-9]/.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))

    即使到這里,還是沒有把IP地址匹配出來,我們還要用^和$來限制字符串的開頭和結尾,所以,最后的匹配IP地址的正則表達式是:

^(?:(?:1[0-9][0-9]/.)|(?:2[0-4][0-9]/.)|(?:25[0-5]/.)|(?:[1-9][0-9]/.)|(?:[0-9]/.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$

    這就是我匹配IP地址最完整的正則表達式,大家可以借鑒一下,有什么bug還望讀者提出,免得誤導其他讀者。

    上面的正則表達式的()括號都是成對出現的,假如有不成對出現,請讀者自己添加一下,可能是我漏寫了。

    下面是我的測試:

<?php$pattern = '/^(?:(?:2[0-4][0-9]/.)|(?:25[0-5]/.)|(?:1[0-9][0-9]/.)|(?:[1-9][0-9]/.)|(?:[0-9]/.)){3}(?:(?:2[0-5][0-5])|(?:25[0-5])|(?:1[0-9][0-9])|(?:[1-9][0-9])|(?:[0-9]))$/';//正則匹配ip地址$ip     = '254.21.0.198';preg_match($pattern,$ip,$out);echo '<pre>';print_r($out);$ip     = '255.777.0.198';preg_match($pattern,$ip,$out);print_r($out);$ip     = '07.25.8.198';preg_match($pattern,$ip,$out);print_r($out);$ip     = '1207.25.8.198';preg_match($pattern,$ip,$out);print_r($out);$ip     = 'qq107.25.8.198';preg_match($pattern,$ip,$out);print_r($out);$ip     = '/././.107.25.8.198';preg_match($pattern,$ip,$out);print_r($out);$ip     = '/././.  7.25.8.198';preg_match($pattern,$ip,$out);print_r($out);$ip     = '107.25.8.19822vvv';preg_match($pattern,$ip,$out);print_r($out);$ip     = '107.25.r8.1982';preg_match($pattern,$ip,$out);print_r($out);$ip     = '107.225.8.19';preg_match($pattern,$ip,$out);print_r($out);$ip     = '225.225.225.225';preg_match($pattern,$ip,$out);print_r($out);$ip     = '0.0.0.0';preg_match($pattern,$ip,$out);print_r($out);$ip     = '00.0.0.0';preg_match($pattern,$ip,$out);print_r($out);$ip     = '0.202.1.0';preg_match($pattern,$ip,$out);print_r($out);$ip     = '0.202.1.226';preg_match($pattern,$ip,$out);print_r($out);$ip     = '249.202.1.0';preg_match($pattern,$ip,$out);print_r($out);$s='';for($i=0;$i<32;$i++){  $s .= '1';}echo $s;echo strlen($s);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人h片在线播放免费网站| 成人黄色午夜影院| 国产日韩欧美夫妻视频在线观看| 亚洲毛片在线看| 国产精品自在线| 91天堂在线视频| 国产精品久在线观看| 91高清视频免费| 亚洲专区国产精品| 中文日韩在线视频| 热久久99这里有精品| 亚洲国产精品免费| www.欧美精品| 国产精品中文字幕久久久| 日本精品久久中文字幕佐佐木| 日韩精品在线电影| 最好看的2019的中文字幕视频| 91精品国产乱码久久久久久久久| 国产一区二区三区精品久久久| 亚洲精品第一国产综合精品| 国产精品第三页| 欧美精品aaa| 色狠狠av一区二区三区香蕉蜜桃| 黑人巨大精品欧美一区免费视频| 日韩中文有码在线视频| 欧美在线欧美在线| 日韩欧美亚洲综合| 久久大大胆人体| 一区二区三区视频免费在线观看| 亚洲美女中文字幕| 亚洲欧美日韩视频一区| 欧美有码在线视频| 亚洲激情久久久| 欧美一区二区三区免费视| 欧美xxxx做受欧美.88| 亚洲一区二区三| 成人综合国产精品| 亚洲日本欧美中文幕| 在线视频日韩精品| 亚洲另类图片色| 亚洲天天在线日亚洲洲精| 欧美日韩国产精品一区| 欧美黑人性视频| 久久香蕉国产线看观看网| 欧美国产日韩一区| 亚洲欧美国产制服动漫| 国语自产精品视频在免费| 欧美肥婆姓交大片| 久久久免费高清电视剧观看| 亚洲白拍色综合图区| 亚洲春色另类小说| 成人网在线观看| 国产精选久久久久久| 亚洲精品一区二区三区婷婷月| 久久影院在线观看| 成人国内精品久久久久一区| 欧美精品在线网站| 国产精品福利小视频| 亚洲人成免费电影| 国产精品久久久久77777| 欧美激情中文字幕乱码免费| 久久天天躁夜夜躁狠狠躁2022| 欧美国产日韩精品| 美女av一区二区| 九九精品视频在线| 国产成人精品免费久久久久| 91在线免费网站| 成人激情综合网| 久久精品国产一区二区电影| 国产一区红桃视频| 亚洲精品短视频| 国产日本欧美一区| 激情成人在线视频| 亚洲一区二区三区毛片| 久久久国产视频91| 91精品国产综合久久久久久蜜臀| 高清一区二区三区日本久| 亚洲精品成人久久久| 欧美风情在线观看| 亚洲国产精品大全| 最新的欧美黄色| 中文欧美在线视频| 国产精品久久久av久久久| 97视频在线看| 成人激情视频网| 日韩精品在线免费播放| 国产欧美一区二区三区视频| 91国产精品电影| 日韩一区视频在线| 日本19禁啪啪免费观看www| 国产免费亚洲高清| 中国日韩欧美久久久久久久久| 一区二区三区久久精品| 亚洲精品天天看| 精品少妇一区二区30p| 亚洲а∨天堂久久精品喷水| 亚洲人成在线免费观看| 日韩中文字幕在线播放| 亚洲在线视频观看| 国产成人精品日本亚洲专区61| 97在线精品视频| 久久久精品国产一区二区| 欧美成人在线免费| 68精品国产免费久久久久久婷婷| 成人网页在线免费观看| 久久在线免费观看视频| 在线精品高清中文字幕| 国产精品高潮粉嫩av| 一区二区中文字幕| 午夜精品一区二区三区在线视| 久久久久久久亚洲精品| 日韩中文字幕免费| 久久精品美女视频网站| 91精品久久久久久综合乱菊| 亚洲精品之草原avav久久| 国产精品欧美日韩| 日韩一区二区久久久| 亚洲成色999久久网站| 亚洲最大的免费| 清纯唯美日韩制服另类| 国产91精品高潮白浆喷水| 亚洲欧美资源在线| 亚洲xxxx3d| 午夜欧美大片免费观看| 亚洲japanese制服美女| 性欧美暴力猛交69hd| 久久久精品日本| 精品成人av一区| 欧美黑人一区二区三区| 亚洲人成伊人成综合网久久久| 国产高清视频一区三区| 久久精品一偷一偷国产| 亚洲精品国产拍免费91在线| 亚洲成人三级在线| 亚洲欧美日韩直播| 97激碰免费视频| 欧美尺度大的性做爰视频| 午夜精品免费视频| 欧美日韩国产第一页| 午夜精品一区二区三区视频免费看| 日本国产精品视频| 91av在线播放| 国产精品入口日韩视频大尺度| 色综合久久精品亚洲国产| 成人精品一区二区三区电影黑人| 精品久久久久久亚洲国产300| 国产一区二区三区在线播放免费观看| 日韩精品亚洲元码| 亚洲欧美日韩在线高清直播| 日韩精品视频在线观看网址| 欧美日韩日本国产| 九色精品免费永久在线| 青草青草久热精品视频在线网站| 91成人福利在线| 久久久久亚洲精品成人网小说| 久久精品福利视频| 亚洲国产精品一区二区三区| 欧美电影在线播放| 91免费看国产| 精品欧美aⅴ在线网站| 在线视频日韩精品| 久久亚洲私人国产精品va| 色综合久久久久久中文网| 欧美一级免费视频|