常用字符验证技巧

 

本实例介绍如何使用正则表达式验证大写字母,主要是使用Regex类的IsMatch方法来判断输入的字母是否为大写字母。本实例使用“^[A-Z]+$”表达式来进行验证。

主要代码如下:

        private void button1_Click(object sender, EventArgs e)

        {

            if (!IsUpChar(textBox1.Text.Trim()))

            { MessageBox.Show("只允许输入大写字母!!!", "提示"); }

            else { MessageBox.Show("输入信息正确!!!!!", "提示"); }

        }

        public bool IsUpChar(string str_UpChar)

        {

            return System.Text.RegularExpressions.Regex.IsMatch(str_UpChar, @"^[A-Z]+$");

        }

 

本实例介绍如何使用正则表达式验证小写字母,主要是使用Regex类的IsMatch方法来判断输入的字母是否为小写字母。本实例使用“^[a-z]+$”表达式来进行验证。

主要代码如下:

private void button1_Click(object sender, EventArgs e)

        {

            if (!IsLowChar(textBox1.Text.Trim()))

            { MessageBox.Show("只允许输入小写字母!!!", "提示"); }

            else { MessageBox.Show("输入信息正确!!!!!", "提示"); }

        }

        public bool IsLowChar(string str_UpChar)

        {

     return System.Text.RegularExpressions.Regex.IsMatch(str_UpChar, @"^[a-z]+$");

        }

 

本实例介绍如何使用正则表达式检查字符串中重复出现的词,主要是使用Regex类的Macthes方法来检查字符串是否有重复的词出现。本实例用“"b(?<word>"w+)"s+("k<word>)"b”表达式来验证。Macthes方法有多种重载形式,本实例所使用的方法声明如下:

public static MatchCollection Matches (

    string input,

    string pattern,

    RegexOptions options

)

参数说明

l     input:要搜索匹配项的字符串。

l     Pattern:要匹配的正则表达式模式。

l     Options:RegexOption枚举值的按位“或”组合。

l     返回值:搜索找到的Match对象的MatchCollection。

MatchCollection对象表示通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合。RegexOption枚举值及说明如表6.1所示。

表6.1                                                   RegexOption枚举值及说明

枚 举 值

说    明

Compiled

指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间

CultureInvariant

指定忽略语言中的区域性差异。有关更多信息可以参见在RegularExpressions命名空间中执行不区分区域性的操作

ECMAScript

为表达式启用符合ECMAScript的行为。该值只能与IgnoreCase、Multiline和Compiled值一起使用,与其他任何值一起使用均将导致异常

ExplicitCapture

指定有效的捕获仅为形式为(?<name>...)的显式命名或编号的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法(?…)显得笨拙

IgnoreCase

指定不区分大小写的匹配

IgnorePatternWhitespace

消除模式中的非转义空白并启用由“#”标记的注释。但是,IgnorePatternWhitespace值不会影响或消除字符类中的空白

Multiline

多行模式。更改“^”和“$”的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配

None

指定不设置选项

RightToLeft

指定搜索从右向左而不是从左向右进行

Singleline

指定单行模式。更改点(.)的含义,使它与每一个字符匹配(而不是与除"n之外的每个字符匹配)

主要代码如下:

private void button1_Click(object sender, EventArgs e)

         {

           System.Text.RegularExpressions.MatchCollection matches = System.Text.RegularExpressions.Regex.Matches (label1.Text, @""b(?<word>"w+)"s+("k<word>)"b", System.Text.RegularExpressions.RegexOptions.Compiled | System.Text. RegularExpressions.RegexOptions.IgnoreCase);

            if (matches.Count != 0)//判断是否有查找结果

            {

                foreach (System.Text.RegularExpressions.Match match in matches)

                {

                    string word = match.Groups["word"].Value;

                    MessageBox.Show(word.ToString(),"英文单词");

                 }

            }

            else { MessageBox.Show("没有重复的单词"); }

        }

        private void Form1_Load(object sender, EventArgs e)

        {

    label1.Text = "The the quick brown fox fox jumped over the lazy dog dog.";

        }

 

本实例介绍如何使用正则表达式替换字符串,主要是使用Regex类的Replace方法来替换字符串。本实例使用“[A-Za-z]"*?”表达式来替换字符串中的字母。Replace方法从输入字符串中的第一个字符开始,用替换字符串替换由正则表达式定义的匹配的所有匹配项。此方法有多种重载形式,本实例所使用的方法声明如下:

public static string Replace (string input,string pattern,string replacement)

参数说明

l     input:要修改的字符串。

l     pattern:要匹配的正则表达式模式。

l     replacement:替换字符串。

l     返回值:已修改的字符串。

主要代码如下:

private void button1_Click(object sender, EventArgs e)

        {

            string strResult = System.Text.RegularExpressions.Regex.Replace(textBox1.Text, @"[A-Za-z]"*?", textBox2.Text);

            MessageBox.Show("替换前字符:" + ""n" + textBox1.Text + ""n" + "替换的字符:" + ""n" + textBox2.Text + ""n" + "替换后的字符:" + ""n" + strResult,"替换");

        }

 

本实例介绍如何使用正则表达式拆分字符串,主要是使用Regex类的Split方法来拆分字符串。运行程序,效果如图6.1所示。本实例使用“"d{3}-"d*”表达式来拆分字符串中的电话号。Replace方法在由正则表达式模式定义的位置处拆分输入字符串。此方法有多种重载形式,本实例所使用的方法声明如下:

 

public static string[] Split (string input,string pattern)

参数说明

l     input:要拆分的字符串。

l     pattern:要匹配的正则表达式。

l     返回值:字符串数组。

主要代码如下:

private void button1_Click(object sender, EventArgs e)

        {

          foreach (string s in System.Text.RegularExpressions.Regex.Split(textBox1.Text,@""d{3,4}-"d*"))

            {

                textBox2.Text+=s; //依次输出"甲乙丙"

            }

        }

 

本实例介绍如何使用正则表达式验证输入字母,主要是使用Regex类的IsMatch方法来判断指定的输入字符是否合法。本实例使用“^[A-Za-z]+$”表达式来验证输入字符是否为字母。

主要代码如下:

private void button1_Click(object sender, EventArgs e)

        {

            if (!IsLetter(textBox1.Text.Trim()))

            { MessageBox.Show("输入的不是字母!!!","提示"); }

            else { MessageBox.Show("输入的是字母!!!!!", "提示"); }

        }

        public bool IsLetter(string str_Letter)

        {return System.Text.RegularExpressions.Regex.IsMatch(str_Letter,@"^[A-Za-z]+$");

        }

 

本实例介绍如何使用正则表达式验证中文汉字输入,主要是使用Regex类的IsMatch方法来判断指定的输入字符是否合法。本实例使用“^["u4e00-"u9fa5],{0,}$”表达式来验证是否输入中文。

主要代码如下:

        private void button1_Click(object sender, EventArgs e)

        {

            if (!IsChinese(textBox1.Text.Trim()))

            { MessageBox.Show("输入的不是中文!!!", "提示"); }

             else { MessageBox.Show("输入正确!!!!!", "提示"); }

        }

        public bool IsChinese(string str_chinese)

        {

          return System.Text.RegularExpressions.Regex.IsMatch(str_chinese, @"^["u4e00-"u9fa5],{0,}$");

        }

 

本实例介绍如何使用正则表达式验证输入字符串,主要是使用Regex类的IsMatch方法来判断指定的输入字符是否合法。本实例要求输入字符至少为8位,使用“^.{8,}$” 表达式来验证。

主要代码如下:

   private void button1_Click(object sender, EventArgs e)

        {

            if (!IsLength(textBox1.Text.Trim()))

            { MessageBox.Show("至少输入8个字符!!!", "提示"); }

            else { MessageBox.Show("输入正确!!!!!", "提示"); }

        }

        public bool IsLength(string str_Length)

        {

            return System.Text.RegularExpressions.Regex.IsMatch(str_Length, @"^.{8,}$");

        }

Posted on 2009-06-26 23:28  chenpeng  阅读(541)  评论(0)    收藏  举报