关于正则表达式

关于正则表达式这个知识点,没必要时时牢记每一个规则,但是在用的时候,你必须能够快速写出来,这就需要做好笔记能随时查看。如果因没写笔记而写不出来,那只能是你自己活该倒霉了。

关于正则表达式最基本的规则,今天只做简单的介绍,以后再做整理:

1、英文字母:[a-zA-Z]

2、数字:[0-9]或者\d

3、中文:[\u4E00-\u9FA5],中文在这里使用unicode编码匹配的。

4、空格:\s可以表示所有的空白字符,但是如果指定全角空格、半角空格、tab键等等,这个时候\s显然不能满足要求,这个时候可以通过unicode编码来匹配。在下面的地址中就可以进行匹配http://tool.chinaz.com/Tools/Unicode.aspx。半角空格对应的unicode编码是\u0020。

5、半角/,两个半角/表示注释,所以在匹配它的时候注意转义,在Js中用'\'来转义,在C#中用@或者/来转义。

6、对于一些特殊字符,比如剧中点'·',直接写上就行。

这是关于正则表达式的一些基本规则。下面说一下应用。

正则表达式主要用来匹配和提取。

一、在js中

1、看字符串是否匹配

                var reg = /^(·|/|\/|\u0020|[\u4E00-\u9FA5]|[a-zA-Z0-9]){0,20}$/;
                //看字符串是否匹配
                if (reg.test(categoryName)) {
                    return true;
                }        

2、将匹配的字符串替换为

var reg = /[0-9]/;
categoryName = categoryName.replace(reg,'');

3、从字符串中提取匹配的字符

 var reg = /(·|/|\/|\u0020|[\u4E00-\u9FA5]|[a-zA-Z0-9]){0,20}/;      
 var matchArr = categoryName.match(reg);
 categoryName = '';
 for (var i = 0; i < matchArr.length; i++) {
    categoryName += matchArr[i];
 }    

以上是在js中的使用方法。下面介绍在C#中的使用方法

二、在C#中

1、是否匹配

        private bool CheckCategoryName(string categoryName, out string ErrMessage)
        {
            bool IsRight = true;
            ErrMessage = "";
            string regexStr = @"^(·|/|/|\u0020|[\u4E00-\u9FA5]|[a-zA-Z0-9]){0,20}$";
            if (Regex.IsMatch(categoryName, regexStr))
            {
                if (categoryName.Length == 0)
                {
                    IsRight = false;
                    ErrMessage = "种类名称不能为空";
                }
            }
            else
            {
                IsRight = false;
                ErrMessage = "1-20个字符,除汉字、英文字母(不区分大小写)、数字外,仅支持全角半角的“/”、半角空格(英语学科常用)、居中点";
            }
            return IsRight;
        }

2、过滤不合法的字符

        private void GetCategoryName(ref string categoryName)
        {
            //过滤掉不合法的字符
            MatchCollection mat = Regex.Matches(categoryName, @"(·|/|/|\u0020|[\u4E00-\u9FA5]|[a-zA-Z0-9]){0,20}");
            categoryName = "";
            foreach (Match item in mat)
            {
                if (item.Success)
                {
                    categoryName += item.Value;
                }
            }
            //将全角/替换为半角/
            categoryName = categoryName.Replace("", "/");
        }

 

posted @ 2016-08-22 15:40  快速突围  阅读(301)  评论(0编辑  收藏  举报