C# 学习笔记 -- 第六天 正规表达式

    技术2022-05-11  160

    ///  C# 学习笔记 -- 第六天 正规表达式//  YFP 2005-12-23//

    正规表达式的使用场合主要是在验证用户输入,快速查找替换字符串。而不是像某些人想的用在控制显示格式上,如果要控制数据输出时的显示格式,请使用格式化字符串。这两者是不同的概念。

    在微软MSDN中有很详细的技术资料 http://msdn.microsoft.com/library/CHS/cpgenref/html/cpconRegularExpressionsLanguageElements.asp

    这里我只举个简单的例子,这个例子控制用户只能输入小于1的小数,而且只能输入两位小数。

    例:using System;using System.Text.RegularExpressions;

    namespace first{ class Class1 {  [STAThread]  static void Main(string[] args)  {   Regex num = new Regex(@"^[0]/./d{2}");  //注意:这里的字符串就是更够实现限制的正规表达式   string input;   Console.WriteLine("Enter a number: ");   input = Console.ReadLine();   while ( num.Match(input).Success == false)   {    Console.WriteLine("Invalid input. Try again.");    Console.WriteLine("Enter a number: ");    input = Console.ReadLine();   }   Console.WriteLine("Validated!");  } }}

    下面来解释一下这个正规表达式。首先的“@”符号是为了关闭转义处理过程,不然会看到更多的斜杠。其次在双引号之间的第一个字符是“^”,他表示这个规则判断的起始位置从字符串起始位置开始。“[0]”表示第一个字符必须是“[]”内字符集合中的任意一个字符,此时“[]”内只有一个“0”,那么也就是说输入的第一个字符必须是0。紧接着是一个“/.”,接下来“/d{2}”表示必须在“.”后输入两个数字。注意这里不能只输入一个点,因为“.”表示除了换行符以外的任何字符。所以还是要加转义字符“/”。

    以此类推,下面将常用的正规表达式语法给出被查。

    正规表达式单字符类:

    项目       描述/d       任何数字/D       任何非数字/ws      任何单词字符/W       任何非单词字符/s       任何空白字符/SW      任何非空白

    范围字符类和集合类:

    项目       描述.         除了换行符以外的任何字符/p{uc}    Unicode字符类型uc内的任何字符/P{uc}     任何不属于Unicode字符类型uc的字符[abdc]    该字符集中的任何字符[^abdc]    这组字符集以外的任何字符

    字符类量词:

    项目       描述*        0个或多个字符+        1个或多个字符?        0个或1个字符{n}       正好n个字符{n,}      至少n个字符{n,m}     至少n个字符,但不多于m个字符

    开始匹配的位置

    项目       描述^        从字符串的开始或新行的开始$        换行符之前或该行末的字符串结尾/G       从上次匹配结束的地方开始/A       字符串的开始/b       出现在字符边界(用于字母数字和非字母数字)的匹配/B       并非出现在单词边界的字符/z       从字符串的结尾,包括换行符/Z       换行符之前的字符串结尾


    最新回复(0)