IP正則匹配

參考:http://www.cnblogs.com/loveyoume/archive/2016/12/25/6220275.html

          http://www.cnblogs.com/kongxianghai/p/3995463.html

         http://www.cnblogs.com/olive987/p/5844501.html



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

十進制範圍:0~255.0~255.0~255.0~255

①當IP的數字是百位數時,假設第一個數字爲1,那麼這個數字的範圍就爲1[0-9][0-9]

②當第一個數字爲2,最大數字是255,當十位數爲5時,個位數最大隻能爲5,而當十位數爲04時,個位數可以是任意數字,所以就有:   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]

第一種:^(?:(?: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]))$


將0-255用正則表達式表示,可以分成一下幾塊來分別考慮:

取值區間 特點 正則寫法 可合併的寫法 可合併的寫法 可合併的寫法
0-9 一位數,只有個位,取值是0~9 \d [1-9]?\d (1\d{2})|([1-9]?\d)

(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))

 

10-99

兩位數,十位取值1-9,個位取值是0~9 [1-9]\d
100-199 三位數,最高位取值爲1,十位取值0-9,個位取值0-9 1\d{2}  -
200-249 三位數,最高位取值爲2,十位取值0-4,個位取值0-9 2[0-4]\d  -  -
250-255 三位數,最高位取值爲2,十位取值5,個位取值0-5 25[0-5]  -  -

第二種:((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))




((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

紅色塊代表:第一個字符是2,第二個字符是0到4,第三個字符是任意一位數字。表示200~249。

綠色塊代表:第一個字符是2,第二個字符是5,第三個字符是0到5。表示250~255。

藍色塊代表:第一個字符是0,或者1,或者可以沒有這個字符,第二個字符是任意一位數字,第三個字符是任意一位數字,可以沒有這個字符。表示1~199,可以有前導零。

“|”代表“或者”的意思,只要滿足三塊中的任意一塊的意思。

前後的“(”和“)”代表這是一組

 

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

{3}代表重複三次。比如“255.255.255.”。

 

第三種:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章