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+"[]?""01\d+:字符结束匹配"数字"1次以上
15.@"^[+|-]?\d*(.\d+)?%?"[+|]?"+"""01\d.\d+".",(.\d+)?01)"
\?:匹配?
(?<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+"1422.@"[09]\d"  匹配数字
23.@"^(([^<>()[\]\\.,;:\s@\""]+"+ @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@" + @"(([09]1,3\.[09]1,3\.[09]1,3"+@"\.[09]1,3)|(([a-zA-Z\-0-9]+\.)+"  + @"[a-zA-Z]{2,}))"Email24.@"((\(\d3\))|(\d3)|(\(\d4\))|(\d4))?\d5,"   匹配电话号码
(\d3):匹配"(","数字3次",")"
(\d{3}-):匹配"数字3次","-"
(\d4):匹配"(","数字4次",")"
(\d{4}-):匹配"数字4次","-"
^(|)?:以上情况其中之一出现在开始处0次或1次
\d{5,}525.@"(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+)?)?)"[+,]?"+"""01(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\"")|[+,]?([08]?\d\""((([05]?\d)|(60))\'(([05]?\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:0012:0029.@"(([01][09])|(2[03])|([09])):(([05][09])|([09]))" 匹配有效的时间:时间格式为: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))$


 

posted @   idoku  阅读(320)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示