好学IT学院:IT信息技术分享交流平台
标签:.NET  来源:动态网站制作指南  作者:by-Jim-Hollenhorst  发布时间:2006-09-02  ★★★加入收藏〗〖手机版
摘要:我的目的就是在30分钟内带你入门并且对正则表达式有一个基本的理解。事实是正则表达式并没有它看起来那么复杂。学习它最好的办法就是开始写正则表达式并且不断实践。在最初的30分钟之后,你就应该知道一些基本的结构并且有能力在你的程序或者web页面中设计和使用正则表达式…

让我们看看另一个例子。

确定电话号码的合法性

假设你的web页面收集顾客的7位电话号码,而且你希望验证输入的电话号码是正确的格式,“xxx-xxxx”,这里每个“x”是一个数字。下面的表达式将搜索整个文本寻找这样的一个字符串:

4. \b\d\d\d-\d\d\d\d -- Find seven-digit phone number
每个“\d”表示“匹配任何单个数字”。“-”没有特殊的意义并且按照字面解释,匹配一个连字符。要避免繁琐的重复,我们可以使用一个含有相同含义的速记符:

5. \b\d{3}-\d{4} -- Find seven-digit phone number a better way
“\d”后面的“{3}”表示“重复前面的字符三次”。

.NET正则表达式的基础

让我们探索一下.NET中正则表达式的基础

特殊字符

你应该知道几个有特殊意义的字符。你已经见过了“\b”,“.”,“*”,和“\d”。要匹配任何空白字符,像空格,制表符和换行符,使用“\s”。相似地,“\w”匹配任何字母数字字符。

让我们尝试更多的例子:

6. \ba\w*\b -- Find words that start with the letter a
这个搜索一个单词的开头(\b),然后是一个字母“a”,接着是任意次数重复的字母数字字符(\w*),最后是一个单词的结尾(\b)。

7. \d+ -- Find repeated strings of digits
这里,“+”与“*”是相似的,除了它需要至少一次重复。

8. \b\w{6}\b -- Find six letter words
在Expresso中测试这几个表达式,然后实践创建你自己的表达式。下面是一个说明有特殊含义的字符的表格:

匹配除换行符外的任何字符
\w  匹配任何字母数字字符
\s 匹配任何空白字符
\d 匹配任何数字
\b 匹配一个单词的开始或结尾
^ 匹配字符串的开始
$ 匹配字字符串的结尾
表1 正则表达式的常用特殊字符

开始阶段

特殊字符“^”和“$”被用来搜索那些必须以一些文本开头和(或)以一些文本结尾的文本。特别是在验证输入时特别有用,在这些验证中,输入的整个文本必须要匹配一个模式。例如,要验证一个7位电话号码,你可能要用:

9. ^\d{3}-\d{4}$ -- Validate a seven-digit phone number
这是和第5个例子一样的,但是强迫它符合整个文本字符串,匹配文本的头尾之外没有其他字符。通过在.NET中设置“Multiline”选项,“^”和“$”改变他们的意义为匹配一行文本的起点和结束,而不是整个正文字符串。Expresso的例子使用这个选项。