C# 正則表達式判斷IP,URL等及其解釋
判斷IP格式方法:
- public static bool ValidateIPAddress(string ipAddress)
- {
- Regex validipregex=new Regex(@"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");
- return (ipAddress!=""&&validipregex.IsMatch(ipAddress.Trim()))?true:false;
- }
正則表達式分析:
- ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
IP中每個十進制數,“|”號划分了5種情況:①0~9 ②10~99 ③100~199 ④200~249 ⑤250~255
{n}表示恰好匹配了n次。 \.){3}表示每個十進制數加'.'重復三次。最后加上最后一個十進制數即完成對IP的匹配。
當然這是較簡單的寫法,也可以簡寫成:
- ^(((\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]))$
其他常用正則表達式:
URL:
- ((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?
關於該正則表達式的說明:
①:該正則表達式匹配的字符串必須以http://、https://、ftp://開頭;
②:該正則表達式能匹配URL或者IP地址;(如:http://www.baidu.com 或者 http://192.168.1.1)
③:該正則表達式能匹配到URL的末尾,即能匹配到子URL;(如能匹配:http://www.baidu.com/s?wd=a&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=1236)
④:該正則表達式能夠匹配端口號;(URL部分轉載自點擊打開鏈接)
E-mail:
- (\w+\.) * \w+@(\w+\.)+[A-Za-z]+
\w匹配任何字母或數字 \W匹配除字母和數字外任何字符 \S匹配任何非空字符(除空格,換行,制表符等)
*表示匹配0或多次 +表示1或多次 .匹配任何除了\n以外的字符 ?匹配0次或1次
貪婪模式和懶惰模式
(abc)de(fg)
對於上面的字符串如果使用(.*)匹配,會得到(abc)滿足,(abc)de(fg)同樣滿足,因為正則默認的是貪婪模式,會在得到第一個匹配項后進行回溯,盡量多的匹配滿足條件的項,為了解決這個問題,可以使用(.*?)表達式,在+或*后面加上?,就會在懶惰模式下進行匹配,得到第一個匹配項后不進行回溯,得到盡可能少的匹配項。
原文連接:http://blog.csdn.net/sinat_21731599/article/details/46045631