IP地址的正規表示式
轉載地址:http://www.cnblogs.com/txw1958/archive/2011/10/13/ip_address_regular_expression.html
IP地址的長度為32位,分為4段,每段8位,用十進位制數字表示,每段數字範圍為0~255,段與段之間用英文句點“.”隔開。例如:某臺計算機IP地址為10.11.44.100。
分析IP地址的組成特點:250-255、200-249、0-199。
這三種情況可以分開考慮,
1. 250-255:特點:三位數,百位是2,十位是5,個位是0~5,用正規表示式可以寫成:25[0-5]
2. 200-249:特點:三位數,百位是2,十位是0~4,個位是0~9,用正規表示式可以寫成:2[0-4]\d
3. 0-199:這個可以繼續分拆,這樣寫起來更加簡單明瞭.
3.1. 0-9: 特點:一位數,個位是0~9,用正規表示式可以寫成:\d
3.2. 10-99: 特點:二位數,十位是1~9,個位是0~9,用正規表示式可以寫成:[1-9]\d
3.3. 100-199:特點:三位數,百位是1,十位是0~9,個位是0~9,用正規表示式可以寫成:1\d{2}
於是0-99的正規表示式可以合寫為[1-9]?\d,那麼0-199用正規表示式就可以寫成(1\d{2})|([1-9]?\d),這樣0~255的正規表示式就可以寫成(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))
最後,前面3段加上句點.可以使用{3}重複得到,第4段再來一次同樣的匹配,得到IP地址的正規表示式:
((?:(?: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))))
與大家互動一下:
1. 為什麼三位數的匹配放在二位數/一位數的前面?因為正規表示式規則之一:最先開始的匹配擁有最高的優先權。
2. 0.0.0.0和255.255.255.255是合法存在的IP地址,你知道是為什麼嗎?
3. 192.169.01.108這種數字前面多帶了個0的型別的,在這裡不是合法的,為什麼要這樣?
4. 為什麼前面在最前面要有?:呢?它在這裡有什麼用?
5. 如果您發現本表示式有錯誤,也請留言指正!
我使用的正規表示式驗證工具,The Regulator下載地址:http://sourceforge.net/projects/regulator/
相關文章
- 正規表示式驗證Ip地址(絕對正確)
- 可以提取ip地址的正規表示式程式碼例項
- 驗證ip地址正規表示式程式碼例項
- ip:port 正規表示式
- IP地址(IPv4)/IPv6地址的正規表示式
- 校驗IP-v4地址的正規表示式
- 校驗IP-v6地址正規表示式
- 匹配http,https,ftp,ftps以及IP地址的URL地址的正規表示式HTTPFTP
- ip格式驗證正規表示式
- 郵箱地址正規表示式驗證
- 匹配圖片連結地址的正規表示式
- python 正規表示式re常用操作符 使用方法 怎麼用re正規表示式表示一個IP地址:0-255Python
- 匹配視訊連結地址正規表示式
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式取src中包含特定字元的地址字元
- 解析url地址正規表示式程式碼例項
- 驗證郵箱和ip格式的正規表示式
- 正規表示式
- 匹配ip-v4正規表示式程式碼
- 匹配ip-v6正規表示式程式碼
- JavaScript的正規表示式JavaScript
- JS 的正規表示式JS
- JS常用正規表示式及驗證時間的正規表示式JS
- 【JavaScript】正規表示式JavaScript
- php –正規表示式PHP
- 正規表示式 教程
- 正規表示式 split()
- java正規表示式Java
- PHP正規表示式PHP
- javascript正規表示式JavaScript
- 【java】正規表示式Java
- 初探正規表示式
- [js]正規表示式JS
- js正規表示式JS
- javascript–正規表示式JavaScript
- ORACLE 正規表示式Oracle
- MySQL 正規表示式MySql
- oracle正規表示式Oracle