http://regex-lib.net/User/anders-liu/
符合RFC标准的URL
中国邮政编码
匹配首尾空格的正则表达式
一个验证URL地址的正则表达式
Email地址 (RFC 2822 mailbox)
regex-lib.net使用的用于检验Email正确性的正则表达式
判断是否全为汉字
单行IPv4地址严格验证简版
简单html标记捕获Regex (Generated by NFAGEN v1.0)
自己宣传一下,这种超大规模的正则表达式,我觉得还得用NFAGEN才能做出来。这个N年前做的工具,现在看起来还是很强大的。在http: //cnblogs.com/sumtec上可以找到下载。 可以捕获HTML标记(XML等也基本适用),并且可以跳过单引号、双引号之间的内容,script内部的内容,以及注释中的内容。其中Tag是一个完整 标记,TagName是捕获到的标记名称(结束标记也会被捕获,但不包含/符号),EndMark是</a>中的/符号(通过联合Tag组, 可以判断是否为结束标记),NotPushMark是<br/>中的/(注意EndMark位置不一样,其余同上),PlainText组是 非标记文本的捕获。脚本中的内容、注释等并没有做特别的捕获处理,也许以后会有特别版本,要看我的心情和时间了。 下面是一个能够正确捕获的示例: <a href="http://www.cnblogs.com/sumtec"></a> <!-- Here we start testing <tag> inside string --> <a οnclick="if(a<b && c>d) alert('<tag> matched by mistake!');"></a> <a οnclick='if(a<b && c>d) alert("/'<tag> matched by mistake!/'");'></a> <!-- Here we start testing </script> inside script --> <script> var tag="</script>"; // here test </script> in an inline comment /* here test </script> in a block comment */ tag="'</script>'/"</script>/""; </script>
(?:(?<PlaneText>[^<]+)|(?=<(?i:script)(?:/s)*[ //>])(?<Tag><(?:/s)*(?>(?<EndMark>//)(?:/s)*)?(?<TagName>[^>/s//]+)(?>(?:/s)*(?<NotPushMark>//)|(?>(?:/s)+(?>'(?:[^//']*(?://.)*)*'|"(?:[^//"]*(?://.)*)*"|[^'">//]+|(?!//(?:/s)*>)//)+)?(?>(?<NotPushMark>//)(?:/s)*)?)>)(?>[^/n]*|///*[^*]*(?:[^/][^/*]*)*//|'(?:[^//']*(?://.)*)*'|"(?:[^//"]*(?://.)*)*"|[^<//"']+|[//]|(?!(?=<(?:/s)*//(?i:script)(?:/s)*[ //>])(?<Tag><(?:/s)*(?>(?<EndMark>//)(?:/s)*)?(?<TagName>[^>/s//]+)(?>(?:/s)*(?<NotPushMark>//)|(?>(?:/s)+(?>'(?:[^//']*(?://.)*)*'|"(?:[^//"]*(?://.)*)*"|[^'">//]+|(?!//(?:/s)*>)//)+)?(?>(?<NotPushMark>//)(?:/s)*)?)>))<)*(?=<(?:/s)*//(?i:script)(?:/s)*[ //>])(?<Tag><(?:/s)*(?>(?<EndMark>//)(?:/s)*)?(?<TagName>[^>/s//]+)(?>(?:/s)*(?<NotPushMark>//)|(?>(?:/s)+(?>'(?:[^//']*(?://.)*)*'|"(?:[^//"]*(?://.)*)*"|[^'">//]+|(?!//(?:/s)*>)//)+)?(?>(?<NotPushMark>//)(?:/s)*)?)>)|<!--(?>[^/-]+|(?!-->)[/-]+)*-->|(?<Tag><(?:/s)*(?>(?<EndMark>//)(?:/s)*)?(?<TagName>[^>/s//]+)(?>(?:/s)*(?<NotPushMark>//)|(?>(?:/s)+(?>'(?:[^//']*(?://.)*)*'|"(?:[^//"]*(?://.)*)*"|[^'">//]+|(?!//(?:/s)*>)//)+)?(?>(?<NotPushMark>//)(?:/s)*)?)>)|)
【.NET正则表达式库】v1.0上线收藏
新一篇: 做CSS精简时可能会用到的正则表达式 | 旧一篇: Internet Explorer 8之我见
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>本文首发于博客园:http://www.cnblogs.com/AndersLiu/archive/2008/06/22/regex-lib-release.html
在经历了近一年的构思、谋划、开发后,.NET正则表达式库(regex-lib.net)终于和各位网友见面了。欢迎大家访问:http://regex-lib.net/。
创意
坦率地说,.NET正则表达式模仿了国外网站http://regexlib.com/。当然,模仿的是创意和界面,核心功能都是自己实现的。
比起老外那个网站,老刘这个网站在正则表达式测试功能方面更具特色。老外毫不客气地称其网站为世界第一个正则表达式库,所以老刘只好谦虚地称.NET正则表达式库为中国第一、世界第二的正则表达式库。
.NET正则表达式库致力于为中国开发者提供一个完善的正则表达式资源分享平台。
相关社区
【团队博客】团队博客用于更有效地传播正则表达式知识。敬请访问:http://regex.cnblogs.com/。园子里的振河、Goodspeed、KissKnife、流浪浪几位网友,在你们不知情的情况下已经把你们加入了这个团队,原谅我的冒昧。其他朋友有想加入的,请在后面回复即可。
【正则表达式小组】为了方便网友提问,特建立正则表达式小组。敬请访问:http://space.cnblogs.com/group/regex/。
技术实现
.NET正则表达式库基于.NET 3.0,数据访问采用LINQ,Web框架采用ASP.NET MVC Preview 3,页面基于YUI,服务器和客户端的数据传输才用JSON。
目前仅对IE6及以上版本提供支持,使用IE7可以得到最佳体验。暂时不支持Firefox,希望有朋友能针对Firefox提供改进方法和意见。
关于代码
.NET正则表达式库在CodePlex开源,情景访问:http://www.codeplex.com/regexlib。其实,老刘不算是有开源精神的人,使用CodePlex也只是看上了他的TFS服务器,这样不管在哪里,只要有VS,有网络,就能写程序。
.NET正则表达式库的源代码才用MS-PL发布,这意味着您可以随意查看、修改和使用这些代码。但老刘还想提几句:
1. regex-lib使用的技术,经历了WebForm、ASP.NET MVC Preview 2和ASP.NET MVC Preview 3;用户验证经历了FormsAuthentication-LiveId-FormsAuthentication;数据访问使用Linq却是探索性 的。再加上老刘水平有限,还要赶进度,所以源代码观赏性和可学习性很差。因此请不要盲目引用里面的代码。
2. 欢迎大家对代码进行研究,并指出其中的错误和不当的地方。但是,
3. 由于老刘对.NET正则表达式库还有很多未完成的想法,所以目前并没有计划向项目组中添加人手、也不打算接受Patch。如果您有好的建议或看法,直接通过任何您知道的与老刘进行联系的方式告诉老刘。
展望
目前的.NET正则表达式库仅仅是——顾名思义——一个存放正则表达式的数据库。而今后,除了分享正则表达式之外,还可以分享一切与正则表达式相关的资源,包括——技术文章、工具、图书。
晒(Share)
互联网的精神是分享,结果是获取。在.NET正则表达式库一步一步实现其目标的过程中,每一滴新鲜的血液都是广大开发者朋友注入的,最终,所有的开发者朋友都将能从其中找到自己所需要的正则表达式资源!