C#语言的正则表达式(Regex)详解

正则表达式我们并不陌生,比如需要验证用户输入是否合法,比如输入邮箱的输入框判断输入是否合乎要求等等。
1.字符匹配
字符匹配可以对匹配是否是数字、是否为非数字、字符和转义字符的匹配。

1.以下是字符匹配

    “\d”----->匹配数字                  实例   1223
    “\D”----->匹配非数字                实例   ASDDG
    “\w”----->匹配任意单字符             实例   ‘A’ 'F'
    "\W"----->匹配非单字符              实例   “ASDSGG”
    "\s"----->匹配空白字符              实例    \d\s\d匹配“1 2”
    "\s"----->匹配非空白字符            实例    \d\S\d匹配“122”
    “.”------>匹配任意字符              实例   ...匹配12ds%f
    "\"------>匹配特殊字符,            实例   \n匹配换行符
    [...]---->匹配括号中的任意字符       实例  [a-d]匹配a,b,c,d
    [^...]--->匹配非括号中的字符         实例 [^b-z]匹配a                        

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

以下是重复匹配

    匹配的重复语法                                   语法解释
    {n}                                           匹配字符n次
    {m,n}                                         匹配字符m次以上,n次以下
    {n,}                                          匹配字符n次以上
    ?                                            匹配0次或者1次
          +                                                                                 匹配1次或者多次      
           *                                                                                 匹配0次以上

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

重复匹配的实例
wang{3} 匹配wang3次
wang{3,8} 匹配wang3-8次
wang{3,} 匹配wangwangwang以上
wang{}* 匹配wang0次以上,不匹配非wang
5? 匹配5或者0 不匹配非0或者5

以下是匹配字符的定位

        符号                      语法解释
        ^                         定位从后面开始匹配
        $                         前面模式位于字符串末端
        \A                        前面模式开始位置
        \z                        前面模式结束位置
        \Z                        前面模式结束位置(换行钱)
        \b                        匹配一个单词边界
        \B                        匹配一个非单词边界

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

以下是转义字符的匹配

转义字符 语法解释
“\”+实际字符 例如\就是单匹配”\”
\n 匹配换行
\r 匹配回车
\t 匹配水平制表符
\v 匹配垂直制表符
\f 匹配换页
\nnn 匹配一个8进制ASCII
\xnn 匹配一个十六进制的Ascii
\unnnn 匹配4个十六进制的unicode
\c+大写字母 匹配键盘的CTRL+大写字母

简单来说,正则表达式就是定义好固定的格式,再对用户的输入信息验证。以判断输入是否合法。

实例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
namespace Regmatch
{
     
     
    class Program
    {
     
     
        static void Main(string[] args)
        {
            string str = @"\d{3,4}-\d{8}";//定义正则表达式
            string str1 = "我们公司的电话是:0371-12345678。感谢您支持!";
            string phone = @"\d{3,4}-\d{8}";//定义正则表达式
            Console.WriteLine("请输入电话号码:");
            string num = Console.ReadLine();
            if (Regex.IsMatch(num, str))
            {
                Console.WriteLine("{0}号码格式正确", num);
            }
            else
            {
            Console.WriteLine(<span class="hljs-string">"{0}号码格式错误,请检查格式"</span>, num);

        }
        Console.WriteLine(<span class="hljs-string">"请输入电话号码:"</span>);
        <span class="hljs-keyword">string</span> num1 = Console.ReadLine();
        if (Regex.IsMatch(num, str))
        {
            Console.WriteLine(<span class="hljs-string">"{0}号码格式正确"</span>, num1);
        }
        <span class="hljs-keyword">else</span>
        {

            Console.WriteLine(<span class="hljs-string">"{0}号码格式错误,请检查格式"</span>, num1);


        }

        Console.WriteLine(<span class="hljs-string">"原文是:{0}"</span>,str1);
        Regex reg = <span class="hljs-keyword">new</span> Regex(phone);
        Console.WriteLine(<span class="hljs-string">"请输入需要修改的电话号码:"</span>);
        <span class="hljs-keyword">string</span> getin = Console.ReadLine();
        <span class="hljs-keyword">string</span> rights = reg.Replace(str1, getin);
        Console.WriteLine(<span class="hljs-string">"修改之后的:{0}"</span>,rights);
        Console.ReadLine();
    }
}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

运行结果:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值