项目中用到的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,}:字符串结束位置
[]{m,}:次数修饰符,至少m次
\w:任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个
7. @"^[a-z,0-9,A-Z,_,-]{3,}" 匹配http://www.i12320.com首页
14.@"^[-]?\d+:字符结束匹配"数字"1次以上
15.@"^[+|-]?\d*(.\d+)?%?)"
\?:匹配?
(?<token>):指定token为非捕获组
\x20*:匹配空格0到多次
\w*:匹配任意字母或数字或下划线0到多次
(&|" 表示阴历日期的8位数字,例如:20070209
21. @"^-?\d+" 匹配数字
23.@"^(([^<>()[\]\\.,;:\s@\""]+"+ @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@" + @"(()|(([a-zA-Z\-0-9]+\.)+" + @"[a-zA-Z]{2,}))" 匹配电话号码
():匹配"(","数字3次",")"
(\d{3}-):匹配"数字3次","-"
():匹配"(","数字4次",")"
(\d{4}-):匹配"数字4次","-"
^(|)?:以上情况其中之一出现在开始处0次或1次
\d{5,}|^[+,-]?([0,1]?[0-7]?\d\""((([0-5]?\d)|(60))\'(([0-5]?\d+)|(60))?(\.\d+)?)?):结尾处匹配"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\"")" 匹配纬度
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
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项目开发。
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?