c# 正则表达式

正则则表达式表述了一个字符串的书写规则。

(判断用户输入的密码是否合法,判断用户输入的邮箱格式是否合法)

1.检索:通过正则表达式,从字符串中获取我们想要的部分

2.匹配:判断给定的字符串是否符合正则表达式的过滤逻辑

二.正则表达式的组成

正则表达式就是由普通字符及特殊字符(成为元字符)组成的文字模式,该模式表述在查找文字主体时待匹配的一个或多个字符串

正则表达式中,\是转义字符、*是元字符(如果要表示一个\.*字符的话,就需要用\\ \. \*)

三.定位元字符

在字符串前加@字符,这样编译器就不会去解析其中的转义字符,作为正则表达式的语法(元字符)存在

 

字符说明
^匹配 字符串的开头或行的开头
$匹配必须出现在字符串的末尾或行的末尾
\b匹配单词的开始或结束的位置
\B匹配非单词的开始或结束的位置
\A指定匹配必须出现在字符串的开头(忽略Multiline选项)
\z指定匹配必须出现在字符串的结尾(忽略Multiline选项)
\Z指定匹配必须出现在字符串的结尾或字符串结尾处的\n之前(忽略Multiline选项)
\G指定匹配必须出现在上一个匹配结束的地方。与Match.NextMatch()一起使用时,此断言确保所有匹配都是连续的。

 

四.基本语法元字符

字符说明
\d匹配数字(0-9)
\D表示\d的补集
\w匹配字母、数字、下划线、汉字
\s匹配任意空白字符(/n换行、/r回车符、/t制表符、/v垂直制表符、/f换页等)
\W 
\S 
  

五.反义字符

字符说明
\W\w的补集
\S\s的补集
\D\d的补集(出0-9)的数字之外
\B匹配非单词的开始或结束的位置
[abc]匹配中括号中的字符
[a-c]匹配中括号中a-c的字符
[^x]匹配除了x以为的任意字符
[^adwz]匹配除了adwz这几个字符以外的任意字符
            string str1 = "holle world";
            string pattern = @"[^oel]";

            string s=Regex.Replace(str1, pattern,"*");
            Console.WriteLine(s);

            Console.ReadKey();

输出结果:*olle**o*l*

 

//通过正则表达式Regex.Splic对字符串按符号分割
string str1 = "fagea,feawgrafe;yjsrasfa.reag/grea";
            string Pattern = @"[,;./]";
            string[] st=Regex.Split(str1, Pattern);
            foreach (var VARIABLE in st)
            {
                Console.WriteLine(VARIABLE);
            }

            Console.ReadKey();

输出结果:

fagea
feawgrafe
yjsrasfa
reag
grea

六.重复描述字符

字符说明
{n}连续重复匹配n个字符
{n,}连续重复匹配n个或多个字符
{n,m}连续重复匹配n-m个字符
重复0次或一次
+重复一次或更多次
*重复零次或更多次
            //输入的是否为qq号
            string str1 = "510646531";
            string str2 = "6042146777894";
            string str3 = "1f2344556";

            string pattern = @"^\d{5,12}$";
           

            bool ismatch = Regex.IsMatch(str1, pattern);
            bool ismatch2 = Regex.IsMatch(str2, pattern);
            bool ismatch3 = Regex.IsMatch(str3, pattern);
            Console.WriteLine($"{ismatch},{ismatch2},{ismatch3}");


            Console.ReadKey();

七.则一匹配符

字符说明
|将连个匹配条件进行逻辑“或”(Or)运算
  
 string str1 = "25()dffse的撒热狗";
            string Pattern = @"\d|[a-z]";
            MatchCollection s = Regex.Matches(str1, Pattern);
            foreach (Match VARIABLE in s)
            {
                Console.WriteLine(VARIABLE);
            }

            Console.ReadKey();

输出结果:

2
5
d
f
f
s
e

 string str1 = "fagea,feawgrafe;yjsrasfa.reag/grea";
            //string Pattern = @"[,;./]";
            string Pattern1 = @"[,]|[;]|[.]|[/]";
            string[] st=Regex.Split(str1, Pattern1);
            foreach (var VARIABLE in st)
            {
                Console.WriteLine(VARIABLE);
            }

            Console.ReadKey();

八.对正则表达式进行分组

用小括号指定表达式(也叫做分组)

//检测IP地址是否合法

            string ip = "192.168.123.010";
            string PatternIP = @"^(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))$";

            bool isIP=Regex.IsMatch(ip, PatternIP);
            Console.WriteLine(isIP);

            Console.ReadKey();

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值