一、测试环境及工具
不同的环境下正则表达式的一些细节是不相同的,这里介绍的是微软 .Net Framework 2.0下正则表达式的行为。可以选用Regex Tester工具来测试。首先确保已安装 .Net Framework 2.0,然后下载Regex Tester,解压缩后直接运行Regex Tester.exe 即可。
二、正则表达式简介
1. 元字符
/d 匹配数字
/w 匹配字母、数字、下划线、汉字
/s 匹配任意空白符,包括空格(space)、制表符(tab)、换行符、中文全角空格符等
. 匹配除换行符以外的任意字符
/b 匹配单词的开始或结束
^ 匹配字符串的开始,如果是多行正则表达式,匹配每行的开始
$ 匹配字符串的结束,如果是多行正则表达式,匹配每行的结束
() 指定 () 内的内容为一个子表达式
2. 次数限定符
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次(包括n次和m次)
3. 指定字符范围,用 [] 表示
例如[0-9] 表示数字,[0-9a-zA-Z] 表示数字或英文字母,[aeiou] 表示英文元音字母,[.?!] 表示匹配 . 或 ? 或 ! 的标点。
4. 反义代码
/S 匹配任意不是空白字符的字符
/D 匹配任意非数字的字符
/W 匹配任意不是字母、数字、下划线、汉字的字符
/B 匹配不是单词开头或结束的位置
[^a] 匹配a以外的任意字符
例如 /S+ 表示不含空格的字符串,<a[^>]+> 表示用 <> 括起来的以a开头的字符串。
5. 转义符 / ,C#中也可用@,例如 /* 表示 * 本身
6. 分支条件
若有几种规则,满足其中一种即可时,用分支条件符号 | 连接正则表达式。使用分枝条件时注意各条件的顺序,比如美国邮编的规则是5位数字,或者用连字号间隔的9位数字,正则表达式应写成 /d{5}-/d{4}|/d{5},不能写成 /d{5}|/d{5}-/d{4}。ip地址的正则表达式可以写成 ((2[0-4]/d|25[0-5]|[01]?/d/d?)/.){3}(2[0-4]/d|25[0-5]|[01]?/d/d?)。