转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
[Regex]ASP.NET 中的正则表达式-微软速成课程         ★★★★
元字符 等效字符类

\a

匹配铃声(警报);\u0007

\b

匹配字符类外的字边界,它匹配退格字符,\u0008

\t

匹配制表符,\u0009

\r

匹配回车符,\u000D

\w

匹配垂直制表符,\u000B

\f

匹配换页符,\u000C

\n

匹配新行,\u000A

\e

匹配转义符,\u001B

\040

匹配 3 位 8 进制 ASCII 字符。\040 表示空格(十进制数 32)。

\x20

使用 2 位 16 进制数匹配 ASCII 字符。此例中,\x2- 表示空格。

\cC

匹配 ASCII 控制字符,此例中是 ctrl-C。

\u0020

使用 4 位 16 进制数匹配 Unicode 字符。此例中 \u0020 是空格。

\*

不代表预定义字符类的任意字符都只作为该字符本身对待。因此,\* 等同于 \x2A(是文字 *,不是 * 元字符)。

\p{name}

匹配已命名字符类“name”中的任意字符。支持名称是 Unicode 组和块范围。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing 和 Sc(货币)。

\p{name}

匹配已命名字符类“name”中不包括的文本。

\w

匹配任意单词字符。对于非 Unicode 和 ECMAScript 实现,这等同于 [a-zA-Z_0-9]。在 Unicode 类别中,这等同于 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]

\W

\w 的否定,等效于 ECMAScript 兼容集合 [^a-zA-Z_0-9] 或 Unicode 字符类别 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]

\s

匹配任意空白区域字符。等效于 Unicode 字符类 [\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,\s 等效于 [ \f\n\r\t\v] (请注意前导空格)。

\S

匹配任意非空白区域字符。等效于 Unicode 字符类别 [^\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,\S 等效于 [^ \f\n\r\t\v] (请注意 ^ 后的空格)。

\d

匹配任意十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [0-9]

\D

匹配任意非十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [^0-9]

返回页首返回页首

表达式示例

很多人都喜欢通过示例学习,下面即提供一些表达式示例。要获取更多示例,请访问以下地址中的正则表达式联机数据库:http://www.regexlib.com/。

模式 说明

^\d{5}$

5 个数值数字,如美国邮政编码。

^(\d{5})|(\d{5}-\d{4}$

5 个数值数字或 5 个数字-短划线-4 个数字。匹配 5 位数字格式的美国邮政编码,或 5 位数字 + 4 位数字格式的美国邮政编码。

^(\d{5}(-\d{4})?$

与前一个相同,但更有效。使用 ? 可使模式中的 4 位数字成为可选部分,而不是要求分别比较不同的两个模式(通过另一种方式)。

^[+-]?\d+(\.\d+)?$

匹配任意有可选符号的实数。

^[+-]?\d*\.?\d*$

与上一个相同,但也匹配空字符串。

^(20|21|22|23|[01]\d)[0-5]\d$

匹配 24 小时制时间值。

/\*.*\*/

匹配 C 语言风格的注释 /* ... */

返回页首返回页首

......略去一部分

免费工具

Regulator (http://royo.is-a-geek.com/iserializable/regulator/) - 一种在客户端运行的正则表达式测试工具,通过 Web 服务与 RegexLib 紧密集成,提供对“匹配”、“拆分”和“替换”等的支持。包括性能分析和语法突出显示功能。

RegexDesigner.NET (http://www.sellsbrothers.com/tools/) - 一种功能强大的可视工具,可帮助构造并测试正则表达式。它可生成 C# 和/或 VB.NET 代码和已编译汇编代码,帮助您将表达式集成到应用程序中。

Regular Expression Workbench (v2.0) (http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=C712F2DF-B026-4D58-8961-4EE2729D7322) - Eric Gunnerson 开发的工具,用于创建、测试和研究正则表达式。具有“Examine-o-matic”功能,允许将鼠标悬停在正则表达式的上方,对其含义进行解码。

返回页首返回页首

高级主题

正则表达式有两个不得不说的功能,一个是“命名组”,另一个是“四向处理”(lookaround processing)。由于这些功能很少使用,此处只简单阐述一下。

使用命名组,您可单独命名匹配组,然后在表达式中使用程序语言引用这些组。如果结合 Replace 方法重新设置输入字符串的格式(通过重新排列顺序、替换输入字符串中的元素),这个功能特别有效。例如,假设日期使用 MM/DD/YYYY 格式的字符串,而您希望日期格式是 DD-MM-YYYY。此时,可编写一个表达式捕获第一种格式,遍历它的匹配集合,并分析每个字符串,然后使用字符串操作建立替换字符串。这需要大量的代码和大量的处理。如果使用命名组,您可完成同样的任务,具体见下:

String MDYToDMY(String input)
{
   return Regex.Replace(intput, @"\b(?<month>\d{1,2})/(?<day>\d{1,2}/(?<year>\d{4})\b", "${day}-
${month}-${year}");
}

您还可以按编号或按名称引用组。在任何情况下,这种引用通称作“反向引用”。另一个经常使用反向引用的场合在匹配表达式本身,如下这个表达式用于查找重复的字母:[a-z]\1。它将匹配“aa”、“bb”、“cc”,但它不同于 [a-z]{2}[a-z][a-z],后两者是等效的,后两者允许匹配“ab”或“ac”或任何其他两个字母的组合。反向引用允许表达式记住表达式已经分析并匹配过的输入字符串中的部分字符。

“四向处理”指很多正则表达式引擎所支持的正负 Lookahead 和 Lookbehind 功能。并不是所有的正则表达式引擎都支持验证四向处理。这些构造不使用字符,即使它们可以匹配字符。有些模式可能在不使用四向处理的情况下无法描述。特别是当模式中存在的一部分依赖于另一部分,如果不使用四向处理,则不能描述这样的模式。下面介绍了每个四向处理的语法。

语法 说明

(?=...)

正 Lookahead

(?!...)

负 Lookahead

(?<=...)

正 Lookbehind

(?<!...)

负 Lookbehind

密码验证是必需四向处理的一个示例。假定在密码限制中,密码必须介于 4 到 8 个字符,且必须至少包含一个数字。为此,您可以仅在匹配中测试 \d,然后使用字符串操作来测试长度。但要在正则表达式中实现这一切,必须使用 Lookahead。特别是正 lookahead,如下所示:^(?=.*\d).{4,8}$

返回页首返回页首

结论

正则表达式是一种描述文本模式的极有效方法,它使文本模式成为字符串验证和操作的极好资源。.NET Framework 通过 System.Text.RegularExpressions 命名空间(特别是其中的 Regex 类)提供了对正则表达式的强大支持。使用 API 很简单,但编写正确的正则表达式通常比较费力。但幸运的是,正则表达式可以重复使用,您可以通过网络中的各种联机资源,从中找出其他人设计的表达式,或者在创建表达式遇到困难时得到帮助。

返回页首返回页首

资源

正则表达式库 http://www.regexlib.com/

正则表达式讨论列表 http://aspadvice.com/login.aspx?ReturnUrl=%2fSignUp%2flist.aspx%3fl%3d68%26c%3d16&l=68&c=16

正则表达式论坛 http://forums.regexadvice.com/

正则表达式 Web 日志 http://blogs.regexadvice.com/

Mastering Regular Expressions (O''''Reilly),作者 Jeffrey Friedl http://www.regex.info/

.NET 正则表达式参考 http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTextRegularExpressions.asp

Jscript 正则表达式语法 http://www.msdn.microsoft.com/library/en-us/script56/html/js56jsgrpRegExpSyntax.asp

正则表达式信息 http://www.regular-expressions.info/

返回页首返回页首

作者简介

Steven A. Smith 是 Microsoft 在 ASP.NET 技术方面的最有价值专家 (MVP),是 ASPAlliance.com 和 DevAdvice.com 的总裁和所有者。此外,他也是 ASPSmith Ltd(一家重点提供 .NET 培训的公司)的所有者和首席教师。他撰写了两本著作:“ASP.NET Developer''''s Cookbook”和“ASP.NET By Example”,并在 MSDN 和 AspNetPRO 杂志上发表了一些文章。Steve 每年都在各种会议上发表演讲,是 INETA 联络处的成员。Steve 拥有企业管理硕士学位及计算机科学工程理学士学位。

如果要联系 Steve,请发送电子邮件至 ssmith@aspalliance.com

上一页  [1] [2] 


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)

[Regex]ASP.NET 中的正则表达式-微软速成课程

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1354 更新时间:2009/4/23 10:45:01
到字符类中,称作字符类差 (character class subtraction)。它的主要作用是,允许从一个字符类中减去另一个字符类,可提供更可读的方式描述某些模式。该规范可通过以下地址访问:http://www.gotdotnet.com/team/clr/bcl/TechArticles/techarticles/Specs/Regex/CharacterClassSubtraction.doc。它的语法类似 [a-z-[aeiou]],匹配所有的小写辅音字母。

返回页首返回页首

预定义的集合元字符

使用目前提供的工具可以完成很多工作。但是,要使用 [0-9] 表示模式中的每个数值数字,或(更糟)使用 [0-9a-zA-Z]表示任何字母数字字符,还有一段相当漫长的过程。为了减轻处理这些常用但冗长模式的痛苦,事先定义了预定义元字符集合。正则表达式的不同实现定义了不同的预定义元字符集合,下面描述的预定义元字符集合在 .NET Framework 中得到 System.Text.RegularExpressions API 的支持。这些预定义元字符的标准语法是,在反斜杠 \ 后跟一个或多个字符。多数预定义元字符只有一个字符,它们的使用很容易,是冗长字符类的理想替代字符。以下是两个示例:\d 匹配所有数值数字,\w 匹配所有单词字符(字母数字加下划线)。例外情况是一些特定字符代码匹配,此时必须指定所匹配字符的地址,如 \u000D 将匹配 Unicode 回车符。下面列出一些最常用的字符类及其等效的元字符。

教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台