出處:http://www.cnblogs.com/txw1958/archive/2011/10/13/ip_address_regular_expression.html
IP地址的長度為32位尚洽,分為4段,每段8位旨怠,用十進(jìn)制數(shù)字表示散休,每段數(shù)字范圍為0~255,段與段之間用英文句點“.”隔開淀衣。例如:某臺計算機IP地址為10.11.44.100炸茧。
分析IP地址的組成特點:250-255每强、200-249、0-199娇掏。
這三種情況可以分開考慮呕寝,
- 250-255:特點:三位數(shù),百位是2婴梧,十位是5下梢,個位是0~5,用正則表達(dá)式可以寫成:25[0-5]
- 200-249:特點:三位數(shù)塞蹭,百位是2孽江,十位是04,個位是09番电,用正則表達(dá)式可以寫成:2[0-4]\d
- 0-199:這個可以繼續(xù)分拆岗屏,這樣寫起來更加簡單明了.
3.1. 0-9: 特點:一位數(shù),個位是0~9钧舌,用正則表達(dá)式可以寫成:\d
3.2. 10-99: 特點:二位數(shù)担汤,十位是19,個位是09洼冻,用正則表達(dá)式可以寫成:[1-9]\d
3.3. 100-199:特點:三位數(shù)崭歧,百位是1,十位是09撞牢,個位是09率碾,用正則表達(dá)式可以寫成:1\d{2}
于是0-99的正則表達(dá)式可以合寫為[1-9]?\d,那么0-199用正則表達(dá)式就可以寫成(1\d{2})|([1-9]?\d)屋彪,這樣0~255的正則表達(dá)式就可以寫成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))
最后所宰,前面3段加上句點.可以使用{3}重復(fù)得到,第4段再來一次同樣的匹配畜挥,得到IP地址的正則表達(dá)式:
((?:(?: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)))