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                        

以下是重複匹配

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

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

以下是匹配字符的定位

        符號                      語法解釋
        ^                         定位從後面開始匹配
        $                         前面模式位於字符串末端
        \A                        前面模式開始位置
        \z                        前面模式結束位置
        \Z                        前面模式結束位置(換行錢)
        \b                        匹配一個單詞邊界
        \B                        匹配一個非單詞邊界

以下是轉義字符的匹配

轉義字符 語法解釋
“\”+實際字符 例如\就是單匹配”\”
\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("{0}號碼格式錯誤,請檢查格式", num);

            }
            Console.WriteLine("請輸入電話號碼:");
            string num1 = Console.ReadLine();
            if (Regex.IsMatch(num, str))
            {
                Console.WriteLine("{0}號碼格式正確", num1);
            }
            else
            {

                Console.WriteLine("{0}號碼格式錯誤,請檢查格式", num1);


            }

            Console.WriteLine("原文是:{0}",str1);
            Regex reg = new Regex(phone);
            Console.WriteLine("請輸入需要修改的電話號碼:");
            string getin = Console.ReadLine();
            string rights = reg.Replace(str1, getin);
            Console.WriteLine("修改之後的:{0}",rights);
            Console.ReadLine();
        }
    }
}

運行結果:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章