(1)“@”符号
以下两个声明是等效的:
string x="D:\\My Huang\\My Doc";
string y = @"D:\My Huang\My Doc";
如果按如下声明,C#将会报错,因为“\”在C#中用于实现转义,如“\n”换行:
string x = "D:\My Huang\My Doc";
(2)基本的语法字符。
\d 0-9的数字
\D \d的补集(以所以字符为全集,下同),即所有非数字的字符
\w 单词字符,指大小写字母、0-9的数字、下划线
\W \w的补集
\s 空白字符,包括换行符\n、回车符\r、制表符\t、垂直制表符\v、换页符\f
\S \s的补集
. 除换行符\n外的任意字符
[…] 匹配[]内所列出的所有字符
[^…] 匹配非[]内所列出的字符
(3)定位字符
^ 表示其后的字符必须位于字符串的开始处
$ 表示其前面的字符必须位于字符串的结束处
\b 匹配一个单词的边界
\B 匹配一个非单词的边界
另外,还包括:\A 前面的字符必须位于字符处的开始处,\z 前面的字符必须位于字符串的结束处,\Z 前面的字符必须位于字符串的结束处,或者位于换行符前
(4)重复描述字符
{n} 匹配前面的字符n次
{n,} 匹配前面的字符n次或多于n次
{n,m} 匹配前面的字符n到m次
? 匹配前面的字符0或1次
+ 匹配前面的字符1次或多于1次
* 匹配前面的字符0次或式于0次
(5)择一匹配
C#正则表达式中的 (|) 符号似乎没有一个专门的称谓,姑且称之为“择一匹配”吧。事实上,像[a-z]也是一种择一匹配,只不过它只能匹配单个字符,而(|)则提供了更大的范围,(ab|xy)表示匹配ab或匹配xy。注意“|”与“()”在此是一个整体。
(6)特殊字符的匹配
(7)组与非捕获组
实例:
1、//匹配小数位数最多为3位的正实数
string strNEXFPRICE = dt.Rows[i]["出厂价"].ToString().Trim();
string regText = "^[0-9]+(.[0-9]{1,3})?$";
Regex reg = new Regex(regText);
bool blMatch = reg.IsMatch(strNEXFPRICE);
2、匹配日期格式:2013-02-08
string strDate = @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$";
详细资料参考:http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html