/// 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 换行符之前的字符串结尾
