Q: 校驗一個ipv4的地址正則表達式
一個合法的IPv4地址由4組數字組成,每組數字之間以.
分隔,且取值範圍是0-255。每組許可範圍總結爲如下4點:bash
描述 | 範圍 | 正則表達式 |
---|---|---|
任何一個1位或2位數字 | 0-99 | \d{1,2} |
任何一個以1開頭的3位數字 | 100-199 | 1\d{2} |
任何一個以2開頭、第2位數字是0-4之間的3位數字 | 200-249 | 2[0-4]\d |
任何一個以25開頭,第3位數字在0-5之間的3位數字 | 250-255 | 25[0-5] |
因此IPv4的每組數字可表示爲:spa
(\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5])
複製代碼
注:每種狀況務必加上()
,由於元字符|
對鄰接的字符/字符集/子表達式都起做用。
進而,IPv4的完整正則表達式爲:code
(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))
複製代碼
上面這個IPv4正則表達式看起來很複雜,可是將其拆開理解就容易多了。所以,在分析正則表達式的時候,應該按照子表達式先內後外的原則來進行,而不是從第一個字符開始一個字符一個字符地去嘗試。ip