也可以简写成: [plain] ^(((\d{1

时间:2021-11-29 08:03:41

判断IP格局要领:

[csharp]  

 

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;  

}  

正则表达式分析:

[plain]  

 

^(([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的匹配。

固然这是较简单的写法,也可以简写成:

[plain]  

 

^(((\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]))$  

任意数字反复1-2次,及0~99 ,其他均是对第一个表达式进行了缩写。C#中务必加上首尾的^和$,否则上述要领匹配-1.1.1.1这样的IP也会返回True。 其他常用正则表达式:

URL:

[plain]  

 

((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\&%_\./-~-]*)?  


关于该正则表达式的说明:

①:该正则表达式匹配的字符串必需以、https://、ftp://开头;

②:该正则表达式能匹配URL或者IP地点;(如: 或者 )

③:该正则表达式能匹配到URL的末尾,即能匹配到子URL;(如能匹配:?wd=a&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=1236)

④:该正则表达式能够匹配端标语;(URL部分转载自点击打开链接)

E-mail:

[plain]  

 

(\w+\.) * \[email protected](\w+\.)+[A-Za-z]+  


\w匹配任何字母或数字  \W匹配除字母和数字外任何字符   \S匹配任何非空字符(除空格,换行,制表符等) 

*暗示匹配0或多次   +暗示1或多次    .匹配任何除了\n以外的字符    ?匹配0次或1次

贪婪模式和懒惰模式

(abc)de(fg)

对付上面的字符串如果使用(.*)匹配,会得到(abc)满足,(abc)de(fg)同样满足,因为正则默认的是贪婪模式,会在得到第一个匹配项后进行回溯,尽量多的匹配满足条件的项,,为了解决这个问题,可以使用(.*?)表达式,在+或*后面加上?,就会在懒惰模式下进行匹配,得到第一个匹配项后不进行回溯,得到尽可能少的匹配项。