正则表达式

当前位置:正则表达式 > c#

c#正则表达式

在 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]+$ 验证字符串中全是字母
7 A[A-Za-z0-9]+$ 验证字符串由数字和字母构成
8 [\u4e00-\u9fa5] 匹配字符串中的中文
9 [^\x00-\xff]  匹配字符串中的双字节字符(包括汉字)

 

正则表达式的符号主要分为元字符和表示重复的字符,分别如下表所示。
 

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

 

正则表达式中表示重复的字符
编 号 字 符 描 述
1 * 0次或多次字符
2 ? 0次或1次字符
3 + 1次或多次字符
4 {n} n次字符
5 {n,M}  n到M次字符
6 {n, } n次以上字符


此外,在正则表达式中使用|分隔符表示多个正则表达式之间的或者关系,也就是在匹配某一个字符串时满足其中一个正则表达式即可。

例如使用正则表达式来验证身份证信息,第一代身份证是由 15 个数字构成的,第二代身份证是由 18 个数字构成的,正则表达式可以写成 \d{15}|\d{18}

在 C# 语言中使用正则表达式时要用到 Regex 类,该类在 System.Text.RegularExpressions 名称空间中。

在 Regex 类中使用 IsMatch 方法判断所匹配的字符串是否满足正则表达式的要求。
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("邮箱格式不正确。");
        }
    }
}


相关文章
苏ICP备2022026517号-2  |   苏公网安备 32081202000316号
淮安先皓网络科技有限公司 © 版权所有  联系我们