[C#正则表达式入门内容]
什么是正则表达式
涉及的基本的类
正则表达式基础知识
构建表达式基本方法
编写一个检验程序
参考资料
[C#正则表达式入门正文]
对于初学者看到类似“/w+@/w+/./w{1,3}”这样复杂没有规律的字符,就会莫名产生一种恐惧感。其实正则表达式和字符串(String)的使用同样非常简单。下面让我们逐步地走进正则表达式的世界!
什么是正则表达式
正则表达式是用来检验和操作字符串的强大工具。简单的理解正则表达式可以认为是一种特殊的验证字符串。正则表达式常见运用是验证用户输入信息格式,比如上面的那组“/w{1,}@/w{1,}/./w{1”,实际上就是验证邮件地址是否合法的;当然正则表达式不仅仅是用于验证,可以说只要运用字符串的地方都可以使用正则表达式;
涉及的基本的类正则表达式在英文中写作(Regular Expression),根据正则表达式的使用范围和单词意思,.NET将其命名空间设置为System.Text.RegularExpressions;
在该命名空间内包括了8个基本的类:Capture、CaptureCollection、Group、GroupCollection、Match、MatchCollection、Regex和RegexCompilationInfo如图1所示;
图1 MSDN Library中正则表达式命名空间
Capture 用于单个表达式捕获结果
CaptureCollection 用于一个序列进行字符串捕获
Group 表示单个捕获的结果
GroupCollection 表示捕获组的集会
Match 表示匹配单个正则表达式结果
MatchCollection 表示通过迭代方式应用正则表达式到字符串中
Regex 表示不可变的正则表达式
RegexCompilationInfo 将编译正则表达式需要提供信息
[注意]
本文属于初学正则表达式的入门文章,对于高级的分组(Group)及其涉及语法等在这里不做介绍;
正则表达式基础知识基本语法
在正则表达式中拥有一套自己的语法规则,常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其他高级语法(字符分组、字符替换和字符决策);
字符匹配语法:
字符语法 语法解释 语法例子
/d 匹配数字(0~9) ‘/d’匹配8,不匹配12;
/D 匹配非数字 ‘/D’匹配c,不匹配3;
/w 匹配任意单字符 ‘/w/w’ 匹配A3,不匹配@3;
/W 匹配非单字符 ‘/W’匹配@,不匹配c;
/s 匹配空白字符 ‘/d/s/d’匹配3 d,不匹配abc;
/S 匹配非空字符 ‘/S/S/S’匹配A#4,不匹配3 d;
. 匹配任意字符 ‘....’匹配A$ 5,不匹配换行;
[…] 匹配括号中任意字符 [b-d]匹配b、c、d, 不匹配e;
[^…] 匹配非括号字符 [^b-z]匹配a,不匹配b-z的字符;
重复匹配语法:
重复语法 语法解释 语法例子
{n} 匹配n次字符 /d{3}匹配/d/d/d,不匹配/d/d或/d/d/d/d
{n,} 匹配n次和n次以上 /w{2}匹配/w/w和/w/w/w以上,不匹配/w
{n,m} 匹配n次上m次下 /s{1,3}匹配/s,/s/s,/s/s/s,不匹配/s/s/s/s
? 匹配0或1次 5?匹配5或0,不匹配非5和0
+ 匹配一次或多次 /S+匹配一个以上/S,不匹配非一个以上/S
* 匹配0次以上 /W*匹配0以上/W,不匹配非N*/W
字符定位语法:
重复语法 语法解释 语法例子
^ 定位后面模式开始位置
$ 前面模式位于字符串末端
/A 前面模式开始位置
/z 前面模式结束位置
/Z 前面模式结束位置(换行前)
/b 匹配一个单词边界
/B 匹配一个非单词边界
转义匹配语法:
转义语法 涉及字符(语法解释) 语法例子
“/”+实际字符 / . * + ? | ( ) { }^ $ 例如://匹配字符“/”
/n 匹配换行
/r 匹配回车
/t 匹配水平制表符
/v 匹配垂直制表符
/f 匹配换页
/nnn 匹配一个8进制ASCII
/xnn 匹配一个16进制ASCII
/unnnn 匹配4个16进制的Uniode
/c+大写字母 匹配Ctrl-大写字母 例如:/cS-匹配Ctrl+S
构造正则表达的方法构造正则表达式需要涉及Regex类,在Regex类中包括:IsMatch()、Replace()、Split()和Match的类;(1) IsMatch()方法;IsMatch()方法实际上是一个返回Bool值得方法,如果测试字符满足正则表达式返回True否则返回False;
这是我发了不少时间整理的C#的正则表达式,新手朋友注意一定要手册一下哦,这样可以节省很多写代码的时间,中国自学编程网为新手朋友整理发布。
只能输入数字:"^[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}$"。
只能输入由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-./?%&=]*)?$"。
验证电话号码:"^(/(/d{3,4}-)|/d{3.4}-)?/d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
验证身份证号(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"。