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}$
     */
}





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