程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#中的正則表達式,

c#中的正則表達式,

編輯:C#入門知識

c#中的正則表達式,


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 正則表達式
{
    using System.Text.RegularExpressions;//正則表達式的命名空間
    class Program
    {
        static void Main(string[] args)
        {
            /*
             * 正則的匹配原則:
             * 1.只關注有沒有能夠進行匹配的字符串,而不關注它的位置,及其它不能匹配的部分。
             * 2.貪婪模式:正則會盡可能多的進行匹配,也就意味著它會匹配到能夠進行匹配的最後一個字符串
             */
            while(true)
            {
                string str = Console.ReadLine();
                #region 元字符_占位符
                //方法的作用是    判斷str是否匹配 自定義的正則表達式規則                
                //1. .:代表一個字符占位,可以代表任意一個字符,必須傳入一個字符,可以是中文
                Console.WriteLine(Regex.IsMatch(str, "b.g"));
                //2.[]:代表一個指定范圍的單個字符,你可以指定間斷的值,也可以指定連續的范圍: 0-9  A-Z   a-z      合法字符:0-9  A-Z   a-z _
                Console.WriteLine(Regex.IsMatch(str, "b[0-9]g"));
                //在正則裡面,^只能寫在開頭,如果在中間寫,^就是一個普通的字符了
                Console.WriteLine(Regex.IsMatch(str, "b[0-9A-Z^a-z_]g"));
                Console.WriteLine(Regex.IsMatch(str, "b[^0-9A-Za-z_^]g"));
                //這裡[0-z]會包含0-z之間的所有字符,也包含一些特殊符號
                //正在分析“b[9-1]g”- [x-y] 范圍的順序顛倒。  只能按ASCII碼的順序從小到大
                Console.WriteLine(Regex.IsMatch(str, "b[9-1]g"));
                Console.WriteLine(Regex.IsMatch(str, "b[0-9-]g"));
                //  11-19
                Console.WriteLine(Regex.IsMatch(str, "[11-19]"));  //  1   1-1   9
                Console.WriteLine(Regex.IsMatch(str, "b[^0-9]g")); 
                //  |:或者
                Console.WriteLine(Regex.IsMatch(str, "[0-9][0-9]|[0-9][0-9][0-9]")); //hjasdgf1234fjhadsjfhas
                // 如果涉及到嚴格的位數匹配,就需要添加 開始 ^和結束$:代表字符從開始到結束必須嚴格的匹配正則
                Console.WriteLine(Regex.IsMatch(str, "^[0-9][0-9]$|^[0-9][0-9][0-9]$"));
                //包含在[]裡面的都是普通字符,而不是元字符,除了^--需要後面有內容,如果需要匹配,則可以考慮使用轉義\
                Console.WriteLine(Regex.IsMatch(str, @"^\^$"));
                Console.WriteLine(Regex.IsMatch(str, "^\\^$")); 
                #endregion

                #region 元字符_修飾符
                // *:它不是一個字符占位,說明它本身並不代表一個字符,它是用來修飾 *前面的子表達式出現0次或者多次:子表達式就是默認指*前面的那一個字符,如果需要代表多個,就使用()包含
                Console.WriteLine(Regex.IsMatch(str, "ab*g"));
                Console.WriteLine(Regex.IsMatch(str, "^(ab)*g$"));
                //+:它不是一個字符占位,說明它本身並不代表一個字符,它是用來修飾 +前面的子表達式出現1次或者多次:子表達式就是默認指+前面的那一個字符,如果需要代表多個,就使用()包含
                Console.WriteLine(Regex.IsMatch(str, "a+g"));
                //? :它不是一個字符占位,說明它本身並不代表一個字符,它是用來修飾 ?前面的子表達式出現0次或者1次:子表達式就是默認指?前面的那一個字符,如果需要代表多個,就使用()包含
                Console.WriteLine(Regex.IsMatch(str, "^a?g$"));
                // {n,m}:{n,m}它不是一個字符占位,說明它本身並不代表一個字符,它是用來修飾{n,m}前面的子表達式最少出現n次,最多出現m次
                Console.WriteLine(Regex.IsMatch(str, "^[0-9]{3,4}$"));
                //{n}:它不是一個字符占位,說明它本身並不代表一個字符,它是用來修飾{n}前面的子表達式只能出現n次
                Console.WriteLine(Regex.IsMatch(str, "^[1-9][0-9]{17}$|^[0-9]{15}$|^[0-9]{17}[xX]$"));
                //{n,}:它不是一個字符占位,說明它本身並不代表一個字符,它是用來修飾{n,}前面的子表達式最少出現n次,最多沒有限制
                Console.WriteLine(Regex.IsMatch(str, "^[0-9]{3,}$"));
                Console.WriteLine(Regex.IsMatch(str, "^q*$"));
                #endregion

                //在c#中判斷登錄名是是否包含特殊符號:[^0-9A-Za-z_]   :也不能包含中文
                #region 簡寫表達式
                //\d:代表一個數字,等同於[0-9]  
                Console.WriteLine(Regex.IsMatch(str, @"^\d{3,}$"));
                //\D:非數字
                Console.WriteLine(Regex.IsMatch(str, @"\D"));
                //\s:空字符:空格,制表位,換行
                Console.WriteLine(Regex.IsMatch(str, @"\s"));
                //\S:非空白字符
                Console.WriteLine(Regex.IsMatch(str, @"\S"));
                // \w:[0-9 a-z  A-Z  _  中文]
                Console.WriteLine(Regex.IsMatch(str, @"\w"));
                //\W:除了[0-9 a-z  A-Z  _  中文]之外的特殊符號
                Console.WriteLine(Regex.IsMatch(str, @"\W"));
                #endregion               
            }

            //判斷字符串是否為正確的國內電話號碼,不考慮分機。
            //010-8888888或010-88888880或010xxxxxxx
            //0335-8888888或0335-88888888(區號-電話號)
            //10086、10010、95595、95599、95588(5位)
            //13888888888(11位都是數字)
            while (true)
            {
                string str = Console.ReadLine();
                //不要試圖一步到位,應該一個一個來進行匹配
                Console.WriteLine(Regex.IsMatch(str,@"^\d{3,4}[-]?\d{7,8}$|^[1-9]\d{4}$|^1[3-9]\d{9}$"));
            }

            //驗證用戶輸入的電子郵箱的合法性 [email protected]
            while (true)
            {
                string str = Console.ReadLine();
                //不要試圖一步到位,應該一個一個來進行匹配
                Console.WriteLine(Regex.IsMatch(str, @"^[0-9A-Za-z_]+[@][0-9A-Za-z_]+[.][A-Za-z]{2,5}$"));
            }
        }
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved