让我们看看另一个例子。
确定电话号码的合法性
假设你的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 | 匹配一个单词的开始或结尾 |
^ | 匹配字符串的开始 |
$ | 匹配字字符串的结尾 |
开始阶段
特殊字符“^”和“$”被用来搜索那些必须以一些文本开头和(或)以一些文本结尾的文本。特别是在验证输入时特别有用,在这些验证中,输入的整个文本必须要匹配一个模式。例如,要验证一个7位电话号码,你可能要用:
9. ^\d{3}-\d{4}$ -- Validate a seven-digit phone number
这是和第5个例子一样的,但是强迫它符合整个文本字符串,匹配文本的头尾之外没有其他字符。通过在.NET中设置“Multiline”选项,“^”和“$”改变他们的意义为匹配一行文本的起点和结束,而不是整个正文字符串。Expresso的例子使用这个选项。