四时宝库

程序员的知识宝库

C# - 正则转义符,验证电话手机号,Email地址,日期与指定区间数 119

正则中的转义符

在正则表达式中也是使用 \ 作为转义符,如果正则表达式中需要的字符也是正则中的字符如 .(点,正则中表示除了换行符外的任意一个字符)就需要使用 \ 进行转义才能使用

//. 表示匹配匹配除了换行符外的任意一个字符
string reg1="a.b";
Console.WriteLine(Regex.IsMatch("a.b", reg1));
Console.WriteLine(Regex.IsMatch("abb", reg1));
Console.WriteLine(Regex.IsMatch("acb", reg1));

//\. 表示只能匹配 .(点)
//@ 是为了防止 \. 的 \ 被 C#语法转义掉
string reg2 = @"a\.b";
//等同于 string reg2 = "a\\.b";
Console.WriteLine(Regex.IsMatch("a.b", reg2));
Console.WriteLine(Regex.IsMatch("abb", reg2));
Console.WriteLine(Regex.IsMatch("avb", reg2));
Console.ReadKey();

其他的还有 - [  ]  + {  } 都需要使用 \

电话手机号

使用正则匹配以下常见格式的电话手机号:

010-6666666 或 100-8888888 或11099999999
0110-6666666 或 0120-88888888(区号-电话号)
10086、10010、95595、95599、95588(5位数字的客服号)
13888888888(11位都是数字的手机号)

1)前两排的正则表达式,可 以 - 分为3部分
左侧匹配规则: \d{3,4} 其中 \d表示0-9任一数字
{3,4}限定左侧数字需要3/4位数,如 010/0110
中间匹配规则: \-? 其中 - 需要使用转义符
在11099999999中没有-,因此使用? 表示 - 可有可无
右侧匹配规则: \d{7,8} 需要7/8位数的0-9任一数字

2)客服号 \d{5} 需要5位数的0-9任一数字
1)与2)是或的关系,需要使用 | 连接起来

3)手机号 11位数 在1)中已包含即没有中间的 -

4)使用^$ 使其完全匹配规则
因此整个正则表达式为:
string reg = @"^((\d{3,4}\-?\d{7,8})|(\d{5}))#34;;
while (true)
{
    Console.WriteLine("请输入电话/手机号");
    string phone = Console.ReadLine();
    Console.WriteLine(Regex.IsMatch(phone,reg));
}

注意:只要正则表达式中使用|(或)进行连接,完全匹配时使用()将其包裹起来,使其成为一个整体,否则会成功匹配以|左侧开头的字符串或以|右侧结尾的字符串

//匹配以(\d{3,4}\-?\d{7,8})开头的
//或以(\d{5})结尾的字符串
string reg = @"^(\d{3,4}\-?\d{7,8})|(\d{5})#34;;
while (true)
{
    Console.WriteLine("请输入电话/手机号");
    string phone = Console.ReadLine();
    Console.WriteLine(Regex.IsMatch(phone,reg));
}

Email地址

使用正则匹配常规的Email地址如腾讯的123456@qq.com;网易的wangyi@163.com;教育的jiaoyu@edu.cn格式

以@ . 将Email地址分为4部分
1)左侧:[a-zA-z0-9_\.]+
2)中间 :必需的 @ 
3)@右侧 :[a-zA-Z0-9]+
4).与右侧:(\.[a-zA-Z]+)+
右侧整个正则表达式为:
string reg = @"^[a-zA-Z0-9_\.]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+#34;;
while (true)
{
    Console.WriteLine("请输入Email地址");
    string email = Console.ReadLine();
    Console.WriteLine(Regex.IsMatch(email, reg));
}

日期

使用正则匹配日期格式,如 2008-8-8或2008.08.08或2008/8/8

可以 - . / 将其分为3个部分
年份: \d{4}
间隔符:[\-\./]
月份与日:\d{1,2}
间隔符与日月整体出现2次 ([\-\./]\d{1,2}){2}
string reg = @"^\d{4}([\-\./]\d{1,2}){2}#34;;
while (true)
{
    Console.WriteLine("请输入日期");
    string date = Console.ReadLine();
    Console.WriteLine(Regex.IsMatch(date, reg));
}

指定区间数

匹配指定区间的数字,如 大于10 小于等于20

大于10:1[1-9]
小于等于20:20
两者是或的关系
string reg = @"^(1[1-9]|20)#34;;
while (true)
{
    Console.WriteLine("请输入数字");
    string num = Console.ReadLine();
    Console.WriteLine(Regex.IsMatch(num, reg));
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接