參考: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,而當十位數爲0到4時,個位數可以是任意數字,所以就有: 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?)