A09_正則表達式

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

using System.Text.RegularExpressions;

//正則表達式的概念  
//檢查,檢索,替換那些符合某個模式的文本  
//屏蔽或替換用戶輸入的“非法”字符串。  

namespace A09_RegularExpression
{
    class Demo2
    {

        // ^  "定位"元字符,表示開頭  
        // $  "定位"元字符,表示結尾 
        // .  表示任意字符
        // \d 表示數字
        // \w 表示字母、數字、下劃線、漢字。
        // *  表示某個元字符規則重複0-N次
        // [] "包含"與[^]"非"元字符
        // {n} 匹配前面的字符n次
        // {n,} 匹配前面的字符n次或多於n次
        // {n,m} 匹配前面的字符n到m次
        // ?  重複0次或者1次
        // +  重複1次或者多次
        // *  表示零到多個元字符,或表示重複零次或者更多次
        // |  將兩個匹配條件進行邏輯“或”運算
        // () 用小括號來制定子表達式

        //開始位置的元字符 ^
        public void Test1()
        {
            string str = "Hello everyone ! ";
            string strResult = Regex.Replace(str, "^", "23333 ");
            Console.WriteLine(strResult);
        }

        //結束位置的元字符 $
        public void Test2()
        {
            string str = "Hello everyone ! ";
            string strResult = Regex.Replace(str, "$", "23333 ");
            Console.WriteLine(strResult);
        }

        //以數字開頭,以數字結尾,且中間有任意多個數字
        public void Test3()
        {
            string str = "12345a678";
            bool isMatch = JudgeNumber(str);
            if (isMatch)
            {
                Console.WriteLine("全部都是數字");
            }
            else
            {
                Console.WriteLine("存在非數字字符");
            }
        }

        //判斷字符串是否全部由數字字符組成
        private bool JudgeNumber(string strNumber)
        {
            string strPattern = @"^\d*$";
            return Regex.IsMatch(strNumber, strPattern);
        }

        //驗證用戶名,字母,數字,漢字,下劃線組成。
        public void Test4()
        {
            string str = "CNLithium_523";
            if (JudgeUserName(str))
            {
                Console.WriteLine("用戶名合法");
            }
            else
            {
                Console.WriteLine("用戶名中存在非法字符");
            }
        }

        private bool JudgeUserName(string strUser)
        {
            string strPattern = @"^\w*$";
            return Regex.IsMatch(strUser, strPattern);
        }


        //[]"包含"與[^]"非"元字符
        //字符串替換
        public void Test5()
        {
            string strResult = null;
            string strContent = "Hello EveryOne !!!! Son of Bitch !!!!";
            string strPattern = @"Son of Bitch";
            strResult = Regex.Replace(strContent, strPattern, "***");
            Console.WriteLine(strResult);
        }

        public void Test6()
        {
            string strContent = "bck";
            if (JudgeMessage(strContent))
            {
                Console.WriteLine("信息中包含非法字符");
            }
            else
            {
                Console.WriteLine("信息合法");
            }
        }

        private bool JudgeMessage(string strMessage)
        {
            string strPattern = @"[a]";
            return Regex.IsMatch(strPattern, strMessage);
        }

        //全部是數字且5-12位之間
        public void Test7()
        {
            string qq1 = "5761";
            string qq2 = "59847dbv";
            string qq3 = "5984758874";

            string strPattern = @"^\d{5,12}$";
            Console.WriteLine(Regex.IsMatch(qq1, strPattern));
            Console.WriteLine(Regex.IsMatch(qq2, strPattern));
            Console.WriteLine(Regex.IsMatch(qq3, strPattern));
        }

        //提取字母和數字
        public void Test8()
        {
            string str = "56484657#$^$&adfg$!#564";

            string strPattern = @"\d|[a-z]"; //整數或者字母a-z

            MatchCollection CollArray = Regex.Matches(str, strPattern);
            foreach (Match item in CollArray)
            {
                Console.Write(item);
            }
            Console.WriteLine("");
        }

        //提取“標籤”
        public void Test9()
        {
            string[] strTagArray;
            string strTag = "C#,ProgramLaugrage;Toturial.RegularExpression";
            string strPattarn = @"[,]|[;]|[.]";//包含,或者;或者.
            strTagArray = Regex.Split(strTag, strPattarn);

            foreach (var item in strTagArray)
            {
                Console.WriteLine(item);
            }
        }

        //()進行分組
        public void Test10()
        {
            string str = "213abllab22哈哈哈";

            //模式定義,(ab+兩個任意字符)X 2
            string strPattern = @"(ab\w{2}){2}";

            Console.WriteLine(Regex.Replace(str, strPattern, "***"));
        }

        /// <summary>
        /// 驗證電話號碼是否合法
        /// (010)-12345678
        /// 010-12345678
        /// 01012345678
        /// </summary>
        public void Test11()
        {
            string strTel1 = "(010)-12345678";
            string strTel2 = "010-12345678";
            string strTel3 = "01012345678";
            string strTel4 = "010)-12345678";
            string strTel5 = "(010)1234-5678";
            string strTel6 = "010-123-45678";
            string strTel7 = "010-1234adfe";

            //定義模式
            string strPattern = @"\(0\d{2,3}\)[-]?\d{7,8}|^0\d{2,3}[-]?\d{7,8}$";
            Console.WriteLine("Tel1 = " + Regex.IsMatch(strTel1, strPattern));
            Console.WriteLine("Tel2 = " + Regex.IsMatch(strTel2, strPattern));
            Console.WriteLine("Tel3 = " + Regex.IsMatch(strTel3, strPattern));
            Console.WriteLine("Tel4 = " + Regex.IsMatch(strTel4, strPattern));
            Console.WriteLine("Tel5 = " + Regex.IsMatch(strTel5, strPattern));
            Console.WriteLine("Tel6 = " + Regex.IsMatch(strTel6, strPattern));
            Console.WriteLine("Tel7 = " + Regex.IsMatch(strTel7, strPattern));

        }

        static void Main(string[] args)
        {
            Demo2 obj = new Demo2();
            obj.Test1();
            obj.Test2();
            obj.Test3();
            obj.Test4();
            obj.Test5();
            obj.Test6();
            obj.Test7();
            obj.Test8();
            obj.Test9();
            obj.Test10();
            obj.Test11();


        }
    }

    //常用正則表達式
    /*
     * 效驗密碼強度                ^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{8,20}$  必須包含大寫字母小寫字母和數字 8-20位
     * 效驗中文                   [\u4e00-\u9fa5]
     * 判斷一個合法的IP4地址       ^((25[0-5]|2[0-4]\d|[1]{1}\d{1}\d{1}|[1-9]{1}\d{1}|\d{1})($|(?!\.$)\.)){4}$
     * 效驗E-mail地址              ^\w+([-_.]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$      
     * 效驗身份證號碼              ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$
     * 效驗金額                    ^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$
     * 效驗日期                    ^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}年\d{1,2}月\d{1,2}日$)$
     * 效驗手機號                  ^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$
     */
}





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