首先隆重推出好的学习网站:http://deerchao.net/tutorials/regex/regex.htm
-、"^"头匹配 ^front表示以"front"开头的字符串。
二、"$"尾匹配 tail$表示以"tail"结尾的字符串。
三、转义序列 所有转义序列都用"\"打头。如"^"、"$"、"+"、"("、")"在表达式中都有特殊意义,所以在正则表达式中也用"\^"、"\$"、"\+"、"\("、"\)"来表示。
四、字符簇 [a-z]匹配小写字符;[A-Z]匹配写字符;[a-zA-Z]匹配所有字符;[0-9]匹配所有数字;[\.\-\+]匹配所有句号,减号和加号;[^a-z]除了小写字母以外的成有字符;^[^a-z]第一个字符不能是小写字母;[^0-9]除了数字以外的所有字符;
五、重复 ^a{4}$表示aaaa;^a{2,4}表示aa,aaa或aaaa;^a{2,}表示多于两个a的字符串;.{2}表示所有的两个字符;
下面举两个常用例子说明:
1、Email的验证 要求: (1)必须包含一个"@" (2)在"@"后面的字符串至少包含一个"."号 (3)"@"前面和后面的字符串由一个或一个以上字母、数字、下划线或减号构成 根据这几条规则,可以与出以下正则表达式: ^[a-zA-Z0-9_\-]{1,}@[a-zA-Z0-9_\-]{1,}\.[a-zA-Z0-9_\-.]{1,}$ 或者: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
2、电话号码的验证 要求: (1)电话号码由数字、"("、")"和"-"构成 (2)电话号码为3到8位 (3)如果电话号码中包含有区号,那么区号为三位或四位 (4)区号用"("、")"或"-"和其他部分隔开 (5)移动电话号码为11或12位,如果为12位,那么第一位为0 (6)11位移动电话号码的第一位和第二位为"13" (7)12位移动电话号码的第二位和第三位为"13" 根据这几条规则,可以与出以下正则表达式: (^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{n}$"。 只能输入至少n位的数字:"^\d{n,}$"。 只能输入m~n位的数字:。"^\d{m,n}$" 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。 只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。 只能输入非零的正整数:"^\+?[1-9][0-9]*$"。 只能输入非零的负整数:"^\-[1-9][]0-9"*$。 只能输入长度为3的字符:"^.{3}$"。 只能输入长度为3至20位的字符:"^\w{3,20}$"。 只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。 只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。 只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。 只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。 只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。 验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
验证电话号码:"^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$" 正确格式XXXX-XXXXXXXX-XXXX。
验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。
验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
"^\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?\d+$" //整数 "^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数 "^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0) "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数 "^(-?\d+)(\.\d+)?$" //浮点数 "^[A-Za-z]+$" //由26个英文字母组成的字符串 "^[A-Z]+$" //由26个英文字母的大写组成的字符串 "^[a-z]+$" //由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串 "^\w+$" //由数字、26个英文字母或者下划线组成的字符串 "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址 "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
使用以上的正则表达式时,需要把前后的引号去掉。
————————————————————————————————————————————
(1)“@”符号 符下两ows表研究室的火热,当晨在“@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的: 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)重复描述字符 “重复描述字符”是体现C#正则表达式“很好很强大”的地方之一: {n} 匹配前面的字符n次 {n,} 匹配前面的字符n次或多于n次 {n,m} 匹配前面的字符n到m次 ? 匹配前面的字符0或1次 + 匹配前面的字符1次或多于1次 * 匹配前面的字符0次或多于0次 以下提供一些简单的示例:
);
//加号(\+)处于开头(^),出现0次或1次(?),1-9中的数字出现一个([]),
(5)择一匹配 C#正则表达式中的 (|) 符号似乎没有一个专门的称谓,姑且称之为“择一匹配”吧。事实上,像[a-z]也是一种择一匹配,只不过它只能匹配单个字符,而(|)则提供了更大的范围,(ab|xy)表示匹配ab或匹配xy。注意“|”与“()”在此是一个整体。下面提供一些简单的示例:
);
//加号(\+)出现在首位,并且出现1次或者0次,(出现100,(出现.,0出现1次或者多次),(出现点,0出现1次或者多次)出现0次或者1次)
(6)特殊字符的匹配 下面提供一些简单的示例:
(7)组与非捕获组 以下提供一些简单的示例:
//在组前加上“?:”表示这是个“非捕获组”,即引擎将不保存该组的内容。
|
请发表评论