Fork me on GitHub

项目中用到的RE分析

1.@"<script[^>]*?>.*?</script>"    匹配javascript标签及其内容
[^>]:[^ ]为排除组,此匹配除>以外的所有字符.
*?:为忽略优先量词的非贪婪模式
2.@"<(.[^>]*)>"    匹配"<>"标签
3.@"([\r\n])[\s]+"    匹配换行和回车
4.@"&(quot|#34);"  匹配html字符"\"
   @"&(amp|#38);"   匹配html字符"&"
   @"&(lt|#60);"   匹配html字符"<"
   @"&(gt|#62);"  匹配html字符">"
   @"&(nbsp|#160);" 匹配html字符" "
   @"&#(\d+);" 匹配所有html字符
5.@"&(iexcl|#161);" 匹配unicode字符\xa1  i(倒转的叹号)
   @"&(iexcl|#162);" 匹配unicode字符\xa2 ¢(货币单位)分钱
   @"&(iexcl|#163);" 匹配unicode字符\xa3  £(货币)英镑
   @"&(iexcl|#169);" 匹配unicode字符\xa9 © 商标  
6.@"^[\w,-,_]{3,}$"  匹配字符或数字或-或_至少3次
^ :字符串起始位置
$:字符串结束位置
[]{m,}:次数修饰符,至少m次
\w:任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个
7. @"^[a-z,0-9,A-Z,_,-]{3,}$"  同上
8.@"\d(:\d)*"  匹配形如1:1:3或123:123等
\d:匹配数字
*:匹配0次以上
9.@"(?i)(?<sid>(\?|&)sid=[\w,+,/,-,=,\\]*)"
(?i):内联匹配模式,不区分大小写.
(?<sid>):指定sid为非捕获组.
(\?|&):匹配?或&
[\w,+,/,-,=,\\]*:匹配组内项目0到任意次
10.@"(?i)(?<fromSSO>(\?|&)fromSSO=[\w,+,/,-,=,\\]*)(\b|&)"
(?i):内联匹配模式,不区分大小写.
(?<fromSSO>:指定fromSSO为非捕获组
\b:匹配一个单词边界
11.@"(\?|&)result=(0|1|2|3)(\b|&)" 同上
12.@"^(http://)?((?<host>(\w+|_+)(-\w*)*).)?i12320.com(/.*)*"   匹配形如http://www.i12320.com的URL规则
13.@"^(http://)?((?<host>(\w+|_+)(-\w*)*).)?i12320.com/?$"  匹配http://www.i12320.com首页
14.@"^[-]?\d+$"  匹配有理数
^[-]?:字符开始匹配"-"0或1次
\d+$:字符结束匹配"数字"1次以上
15.@"^[+|-]?\d*(.\d+)?%?$"
^[+|-]?:字符开始匹配"+"或"-"0次或1次
\d*:匹配数字一次以上
.\d+:匹配"."一次,数字一次以上
(.\d+)?:匹配上0次或1次
%?:匹配"%"0次或1次
16.@"\?\x08*\w+\x08*=\x08*\w*"  匹配Url参数
\?:匹配"?"
\x08*:匹配退格字符0到多次
\w+ :匹配任意字母或数字或下划线1到多次
=:匹配"="
17.@"\?(?<token>sid\x20*=\x20*\w*\x20*)(&|$)"
\?:匹配?
(?<token>):指定token为非捕获组
\x20*:匹配空格0到多次
\w*:匹配任意字母或数字或下划线0到多次
(&|$):匹配"&"或字符结尾处
18. @"_*\w+(-?\w+)*@_*\w+(-?\w+)*(._*\w+(-?\w+)*)*.\w*"  匹配Email地址
_*:匹配"_"0到多次
\w+:匹配任意字母或数字或下划线1到多次
-?\w+:匹配"-"0到1次,\w同上
(-?\w+)*:上匹配0到多次
@:匹配"@"
_*:"_"匹配0到多次
(._*\w+(-?\w+)*)*:"."匹配一次,就匹配任意字母或数字或下划线1到多次.括号中匹配0到多次.
19. @"\.*(?<url>((http://)?([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?))\.*" 匹配Url
\.*:匹配","0到多次
(?<url>):指定<url>为非捕获组
(http://)?:匹配"http://"0或1次
([\w-]+\.)+:匹配"\w-."1到多次
(/[\w-./?%&=]*)?
20.@"^\d{7}(\d)$" 表示阴历日期的8位数字,例如:20070209
21. @"^-?\d+$"  同14
22.@"^[0-9]\d*$"  匹配数字
23.@"^(([^<>()[\]\\.,;:\s@\""]+"+ @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@" + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"  + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"  + @"[a-zA-Z]{2,}))$"  匹配Email *
24.@"^((\(\d{3}\))|(\d{3}-)|(\(\d{4}\))|(\d{4}-))?\d{5,}$"   匹配电话号码
(\(\d{3}\)):匹配"(","数字3次",")"
(\d{3}-):匹配"数字3次","-"
(\(\d{4}\)):匹配"(","数字4次",")"
(\d{4}-):匹配"数字4次","-"
^(|)?:以上情况其中之一出现在开始处0次或1次
\d{5,}$:数字在结束处出现5次以上
25.@"^(http|https):\/\/\w+\.\w+"  匹配网址
^(http|https):在开始处匹配"http"或"https"
::匹配":"
\/:转义匹配"/"
\w+:匹配任意一个字母或数字或下划线
\.:匹配"."
26.@"^[+,-]?(180\"")$|^[+,-]?([0,1]?[0-7]?\d\""((([0-5]?\d)|(60))\'(([0-5]?\d+)|(60))?(\.\d+)?)?)$"  匹配经度
^[+,-]?:开始处匹配"+"或"-"0次或1次
(180\"")$:结尾处匹配"180","”","""
[0,1]?:匹配"0"或"1"0次或1次
[0,7]?:匹配"0"或"7"0次或1次
[0-5]?:匹配"0-5"0次或1次
(60)\':匹配"60","'"
\.\d+:匹配".","数字"1次或多次,
27.@"^[+,-]?(90\"")$|^[+,-]?([0-8]?\d\""((([0-5]?\d)|(60))\'(([0-5]?\d+)|(60))?(\.\d+)?)?)$" 匹配纬度
28.@"^(([0-1][0-9])|(2[0-3])|([0-9])):(([0-5][0-9])|([0-9]))-(([0-1][0-9])|(2[0-3])|([0-9])):(([0-5][0-9])|([0-9]))$"  匹配有效工作时:间时间格式为:08:00-12:00
29. @"^(([0-1][0-9])|(2[0-3])|([0-9])):(([0-5][0-9])|([0-9]))$" 匹配有效的时间:时间格式为:08:00
30.@"^([1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9])$"  匹配出生日期

 

遇到的RE分析:
匹配Base64:
This one is good, but will match an empty String:^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$

This one does not match empty string :^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$

 

DateTime范围的日期的正则
^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$


dd/MM/yyyy这种“日月年”格式的日期。
^(?:(?:(?:0?[1-9]|1[0-9]|2[0-8])([-/.]?)(?:0?[1-9]|1[0-2])|(?:29|30)([-/.]?)(?:0?[13-9]|1[0-2])|31([-/.]?)(?:0?[13578]|1[02]))([-/.]?)(?!0000)[0-9]{4}|29([-/.]?)0?2([-/.]?)(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00))$


 

作  者:doku
出  处:http://www.cnblogs.com/kulong995/
关于作者:喜欢编程,喜欢美食,专注于.NET项目开发。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

posted @ 2012-02-16 08:46  idoku  阅读(259)  评论(0编辑  收藏  举报