C#正则表达式(Regex类)

电脑杂谈  发布时间:2019-08-13 07:04:14  来源:网络整理

c#正则表达式替换_c# 正则表达式_c# 正则表达式

正则表达式的主要功效是验证字符串的值是否满足一定的规则,在网页输入数据验证方面的使用比较多。

例如验证输入的邮件是否非法、输入的号码是否非法、输入的用户名是否满足条件等。

正则表达式并不是 C# 语言独有的,在大多数的编程语言中都是支持的,包含一些脚本语言也支持,例如 JavaScript、JQucry 等。

正则表达式是专门处理字符串操作的,其自身有固定的句式。

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

正则表达式中的元字符编号字符描述

匹配除换行符以外的一切符号

匹配字母、数字、下画线

匹配空白符(括号)

匹配数字

匹配表达式的开始或结束

匹配表达式的直到

匹配表达式的结束

正则表达式中认为重复的符号编 号字 符描 述

0次或多次字符

0次或1次字符

c# 正则表达式_c# 正则表达式_c#正则表达式替换

1次或多次字符

{n}

n次字符

{n,M}

n到M次字符

{n, }

n次以上字符

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

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

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

在 Regex 类中使用 IsMatch 方法分析所匹配的字符串是否满足正则表达式的要求。

【示例】在 Main 方法中从控制台输入一个邮箱,使用正则表达式分析其正确性。

按照短文要求,在本例中邮件验证的正则表达式的句式是包括 @,在 @ 前面是小写如果数字、下画线,在 @ 后面应该字母如果数字、下画线,所以字母中间要富含.c# 正则表达式,在 . 后面还要加上字母如果数字、下画线。具体的源码如下。

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("邮箱格式不正确。");
        }
    }
}
执行下面的源码,作用如下图所示。

正则表达式的使用

邮件的正则表达式也是多种写法,下面的句式只是其中的一种,例如将案例中的\w替换成[a-zA-Z-9_]。

c# 正则表达式_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]

c# 正则表达式_c#正则表达式替换_c# 正则表达式

负值字符集合。匹配未包括的任意字符。例如,‘[^abc]’可以匹配“plain”中的‘p’

[a-z]

匹配指定范围内的任意字符。例如,‘[a-z]’可以匹配'a'到'z'范围内的任意小写字母字符

[^a-z]

匹配不在指定范围内的任意字符。例如c# 正则表达式,‘[^a-z]’可以匹配不在‘a’~‘z’'内的任意字符

匹配非英语边界

匹配一个非数字字符,等价于 [^-9]

匹配一个换页符

匹配一个换行符

匹配一个回车符

匹配任何非空白符号

匹配一个制表符

匹配一个垂直制表符。等价于 \xb 和 \cK

匹配任何非英语字符。等价于‘[^A-Za-z-9_]’

除了邮件的正则表达式以外,还有一些常见的正则表达式,如下表所示。

编号正则表达式效果

c# 正则表达式_c#正则表达式替换_c# 正则表达式

\d{15}|\d{18}

验证号码(15位或18位)

\d{3}-\d{8}|\d{4}-\d{7}

验证国内的固定电话(区号有3位或4位,并在区号和电话号码之 间加上-)

^[1-9]\d*$

验证字符串中都是正小数

^-[1-9]\d*$

验证字符串中都是负整数

^-?[1-9]\d*$

验证字符串中是小数

^[A-Za-z]+$

验证字符串中全是小写

A[A-Za-z-9]+$

验证字符串由数字和小写构成

[\u4e00-\u9fa5]

匹配字符串中的英文

[^\x00-\xff]

匹配字符串中的双字符字符(包含汉字)


本文来自电脑杂谈,转载请注明本文网址:
http://xinshanjie.com/a/jisuanjixue/article-119065-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 张紫阳
      张紫阳

      我以FFF团的名义召唤你们

    热点图片
    拼命载入中...