C#开发之——正则表达式(4.9)

一 概念

  • 正则表达式的主要作用是验证字符串的值是否满足一定的规则
  • 在页面输入数据验证方面的应用比较多,比如验证输入的邮箱是否合法、输入的身份证号码是否合法、输入的用户名是否满足条件等
  • 正则表达式并不是C#语言独有的,在大多数的编程语言中都是支持的,包括一些脚本语言也支持,例如JavaScript、JQuery等

二 正则表达式的写法

  • 正则表达式是专门处理字符串操作的,其本身有固定的写法
  • 正则表达式的符号主要分为元字符和表示重复的字符

2.1 字符列表

正则表达式中的元字符

编号字符描述
1.匹配除换行符以外的所有字符
2\w匹配字母、数字、下划线
3\s匹配空白符(空格)
4\d匹配数字
5\b匹配表达式的开始或结束
6^匹配表达式的开始
7$匹配表达式的结束

正则表达式中表示重复的字符

编号字符描述
1*0次或多次字符
20次或1次字符
3+1次或多次字符
4{n}n次字符
5{n,M}n次到M次字符
6{n,}n次以上字符

2.2 使用说明

  • 此外,在正则表达式中使用|分隔符表示多个正则表达式之间的关系,也就是在匹配某一个字符串时满足其中一个正则表达式即可。例如使用正则表达式来验证身份信息,第一代身份证是由15个数字构成的,第二代身份证是由18个数字构成的,正则表达式可以写成\d{15}|\d{18}\
  • 在C#语言中使用正则表达式时要用到Regex类,该类在System.Text.RegularExpressions名称空间中
  • 在Regex类中使用IsMatch方法判断所匹配的字符串是否满足正则表达式的要求

三 实例 在 Main 方法中从控制台输入一个邮箱,使用正则表达式判断其正确性

3.1 分析

根据题目要求,在本例中邮箱验证的正则表达式的写法是包含@,在@前面是字母或者数字、下划线,在@后面也是字母或者数字、下划线,并且字母后面要含有.,在.后面还要加上字母或者数字、下划线

3.2 代码

复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("请输入一个邮箱");
        string email = Console.ReadLine();
        Regex regex = new Regex(@"^(\w)+(\.\w)*@(\w)+((\.\w+)+)$");
        if (regex.IsMatch(email))
        {
            Console.WriteLine("邮箱格式正确。");
        }
        else
        {
            Console.WriteLine("邮箱格式不正确。");
        }
    }
}

3.3 说明

  • 邮箱的正则表达式也有很多种写法,上面的写法只是其中的一种。例如 将实例中的\w替换成[a-zA-Z0-9]

  • 此外,在Regex类中还提供了很多方法来操作正则表达式

    字符描述
    \转义字符,将一个具有特殊功能的字符转义为一个普通字符或返回来
    (pattern)匹配pattern并获取这一匹配
    (?:pattern)匹配pattern但不获取匹配结果
    (?=pattern)正向预查,在任何匹配pattern的字符串开始处匹配查找字符串
    (?!pattern)负向预查,在任何匹配pattern的字符串开始处匹配查找字符串
    x|y匹配x或y。例如,’z|food’能匹配”z”或”food”。’(z|f)ood’则匹配”zood”或”food”
    [xyz]字符集合。匹配所包含的任意一个字符。例如,’[abc]’可以匹配”plain”中的’a’
    [^xyz]负值字符集合。匹配未包含的任意字符。例如,’[^abc]’可以匹配”plain”中的’p’
    [a-z]匹配指定范围内的任意字符。例如,’[a-z]’可以匹配’a’到’z’范围内的任意小写字符
    [^a-z]匹配不在指定范围内的任意字符。例如,’[^a-z]’可以匹配不在’a’~’z’内的任意字符
    \B匹配非单词边界
    \D匹配一个非数字字符,等价于[^0-9]
    \f匹配一个换页符
    \n匹配一个换行符
    \r匹配一个回车符
    \S匹配任意非空白字符
    \t匹配一个制表符
    \v匹配一个垂直制表符。等价于\x0b和\cK
    \W匹配任意非单词字符。等价于’[^A-Za-z0-9]’

四 常用的正则表达式

编号正则表达式作用
1\d{15}|\d{18}验证身份证号码(15位或18位)
2\d{3}-\d{8}|\d{4}-\d{7}验证国内的固定电话(区号有3位或4位,并在区号和电话号码之间加上-)
3^[1-9]\d*$验证字符串中都是正整数
4^-[1-9]\d*$验证字符串中都是负整数
5^-?[1-9]\d*$验证字符串中都是整数
6^[A-Za-z]+$验证字符串中全是字母
7A[A-Za-z0-9]+$验证字符串由数字和字母构成
8[\u4e00-\u9fa5]匹配字符串中的中文
9[^\x00-\xff]匹配字符串中的双字节字符(包括汉字)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值