C# 回顾正则表达式的常用语法

下面是常用的语法符号:
^:匹配一个字符串开头
$:匹配一个字符串结尾

[]: 匹配一位字符,这一位字符可以是中括号中的任何一位,例如[1235tgd]
[1-9]:这一位字符可取范围:1到9
[a-zA-Z]:这一位字符可以是:a到z或者A到Z
[^1-9]:这一位字符可以是1到9之外的任何字符

+:前面的一位字符连续出现了1次或多次
*:前面的一位字符连续出现了0次或多次
?:前面的一位字符连续出现了0次或1次

{m}:前面的一位字符连续出现m次
{m,}:前面的一位字符至少连续出现m次
{m,n}:前面的一位字符出现了m到n次

\d:[0-9]
\D:[^0-9]

.:通配符,可以匹配任何字符

 

代码例子:

//例子1,qq号;要求:
//5-11位数
//第一位不能是0
//全数字
Regex rg = new Regex("^[1-9]\\d{4,10}$");
bool result = rg.IsMatch("523456");
Console.WriteLine(result);

//例子2:判断手机号是否合法
Regex rePhone = new Regex("^1[34578]\\d{9}&");

//例子3:邮箱是否合法。有@和.com
Regex reEmail = new Regex("^.+@.+\\.com$");  //.是通配符,需要加\转义,然后\在字符串需要加\转义,所以这里有2个\\
bool resultE = reEmail.IsMatch("29126356@qq.com");
Console.WriteLine(resultE);

//例子3:将Parker chen          luck             mr chen替换成Parker chen,luck,mr chen   2个空格替换成逗号
Regex reRep = new Regex(" {2,}");
string resultRep = reRep.Replace("Parker chen          luck             mr chen", ",");
Console.WriteLine("resultRep:" + resultRep);

//例子4:将电话号码18888888888变成188****8888
//使用小括号,实现分组
Match match = Regex.Match("18888888888", "^(1[34578]\\d)(.{4})(.{4})$");
GroupCollection groups = match.Groups;
string value1 = groups[1].Value;  //从第一组,记住不是0
string value2 = groups[2].Value;
string value3 = groups[3].Value;
Console.WriteLine("value1:" + value1);
Console.WriteLine("value2:" + value2);
Console.WriteLine("value3:" + value3);
Console.WriteLine("phone:" + value1+"****"+value3);

//练习例子
Regex rgL = new Regex("^[abch]el*o Wor[a-z]$");
bool resultL = rg.IsMatch("helllo Work");
Console.WriteLine(resultL);

 

posted @ 2020-05-20 23:54  溜溜球_小钢wan  阅读(165)  评论(0编辑  收藏  举报