首页 > 代码库 > C# 正则表达式

C# 正则表达式

正则表达式通配符叫做:元字符

1> . 除\n之外的任意单个字符
2> [] 表示取中括号内的任意一个字符
3> ^ 在中括号内匹配取反,在外匹配以什么开头
4> | 或者
5> () 优先级或定义提取组


6> * 限定符 表示前面的表达式可以出现0次或多次,可有可无,可多可少
7> + 限定符 至少出现1次或多次
8> ? 限定符 表示出现一次或出现0次
9> { } 限定符 表示限定前面的正式表达式出现的次数
10>{n,m} 限定符 限定符前面的正则表达式出现的次数至少在>=n和<=m之间
11>{n,} 限定符 限定符前面的正则表达式出现的次数至少在<=n次
12> $ 表示匹配结束,如xyz$ 表示任何以xyz结束的字符串,与^配合限定固定字符,如^xyz$

正则表达式特殊表示方式有(为了让编译器区分转义,在\前面应该加@,如@"^\d{6}$"等):
\d 表示0~9的其中任意数字
\D 是\d的反面,表示非0~9的任意数字

^a[0-9]b$可以写为^a\db$,其中\d表示0~9中任意数字的意思,而大写\D则相当于取反,表示\d的反面
如[^0-9]b 可以写为\Db

\s 表示空白符,如空格和回车等不可见的字符
\S \s的反面,表示非空白符

\w 表示数字,字母、下划线或汉字,即能组成单词的任意字符,除% & #@ !$等字符。[a-zA-Z0-9_汉字]

\W 非\w,等同于[^\w]%

----------------------------------------------------------------------------------
正则表达式是通过以上不同元字符之间的组合使用,而达到匹配字符目的的。
从而为编程带来更大的便利。
在.Net中使用Regex类(在System.Text.RegularExpressions命名空间下)来处理正式表达式,
其中常用的成员方法有:
----------------------------------------------------------------------------------
Regex.IsMatch()//判断一个字符串是否匹配某个正则表达式
Regex.Match()//提取一个
Regex.Matches()//提取多个
Regex.Replace() //字符串替换,把所有匹配正则表达式的字符串替换为对应的字符

范例:电子邮箱验证 @"^[a-zA-Z0-9][a-zA-Z0-9_\.]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+$"
6位邮政编码 ^[0-9]{6}$
15位或18位纯数字身份证号码 ^([0-9]{15}|[0-9]{18})$
或 ^(\d{15}|\d{18})$
或 ^\d{15}$|^\d{18}$

其它常用的C#正则表达式!

"^\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
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址

YYYY-MM-DD基本上把闰年和2月等的情况都考虑进去了
^((((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-))$

 

C#正则表达式
图片 src[^>]*[^/].(?:jpg|bmp|gif)(?:\"|\‘)
中文 ^([\u4e00-\u9fa5]+|[a-zA-Z0-9]+)$
网址 "\<a.+?href=http://www.mamicode.com/[‘""](?!http\:\/\/)(?!mailto\:)(?>foundAnchor>[^‘"">]+?)[^>]*?\>"

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

C# 正则表达式