正则表达式Regex类
一、属性
CacheSize 获取或设置已编译的正则表达式的当前静态缓存中的最大项数。 默认是15个,最近使用的15个会存在缓存中,避免重新创建。当有第16个进来会替换掉第 1个。保持15个。
Options 返回传入 Regex 构造函数的选项。
RightToLeft 获取一个值,该值指示正则表达式是否从右向左进行搜索。
二、方法
CompileToAssembly 已重载。 编译正则表达式,并将其保存到单个程序集的磁盘中。
Escape 通过替换为转义码来转义最小的元字符集(\、*、+、?、|、{、[、(、)、^、$、.、# 和空白)。
GetGroupNames 返回正则表达式的捕获组名数组。
GetGroupNumbers 返回与数组中的组名相对应的捕获组号的数组。
GroupNameFromNumber 获取与指定组号相对应的组名。
GroupNumberFromName 返回与指定组名相对应的组号。
InitializeReferences 基础结构。 由 CompileToAssembly 方法生成的 Regex 对象使用。
IsMatch 已重载。 指示正则表达式在输入字符串中是否找到匹配项。
Match 已重载。 在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个 Match 对象返回。
Matches 已重载。 在输入字符串中搜索正则表达式的所有匹配项并返回所有成功的匹配,就像多次调用 Match 一样。
Replace 已重载。 在指定的输入字符串内,使用指定的替换字符串替换与某个正则表达式模式匹配的字符串。
Split 已重载。 在由正则表达式匹配项定义的位置将输入字符串拆分为一个子字符串数组。
Unescape 取消转义输入字符串中的任何转义字符。
UseOptionC 基础结构。 由 CompileToAssembly 方法生成的 Regex 对象使用。
UseOptionR 基础结构。 由 CompileToAssembly 方法生成的 Regex 对象使用。
代码示例:
static void Main(string[] args) { Regex reg = new Regex(@"\d+"); Regex.CacheSize = 1000; //最大静态缓存项数,不知道用来干嘛的 Console.WriteLine(reg.Options); //输出 Singleline 构造函数中的选项 Console.WriteLine(reg.RightToLeft); //输出 False 是否从右向左搜索 Console.WriteLine(Regex.Escape(@"\d+")); //输出 \\d\+ 这个Escape 方法用于动态获取的变量生成的正则表达式,这时如果变量中含有正则中的元字符,会被解析成元字符,就可能会导致正则编译不通过,从而导致程序异常,需要对变量进行转义处理。比如根据用户输入的id获取Html控件,如果这个用户输入的控件id含有元字符,那么就会抛异常,这个时候就可以用Escape转码一下 Console.WriteLine(Regex.Unescape(@"\\d\+")); //输出 \d+ 反转码,获取转码之前的字符串 Console.WriteLine(reg.IsMatch("123")); //输出 True Console.WriteLine(reg.IsMatch("abc")); //输出 False Console.WriteLine(reg.Match("1a")); //输出 1 返回精确的匹配到的结果 MatchCollection col = reg.Matches("12a34b45d"); //match与matches的区别在于match返回第一个匹配,而matches返回全部的匹配 foreach (var c in col) { Console.WriteLine(c.ToString()); //输出 12 34 45 } Console.WriteLine(reg.Replace("ab5cd","k")); //输出abkcd 替换正则表达式匹配到的字符,第二个参数是用于替换的字符 Console.WriteLine(reg.Replace("a1b2c3d", "k")); //输出akbkckdk string[] strArr = reg.Split("ab2cd"); //用匹配到的字符将字符串分割成两个字符串数组 foreach (string str in strArr) { Console.WriteLine(str); //输出 ab cd } Regex reg2 = new Regex(@"(?<数字分组>\d+)abc"); int[] intArr = reg2.GetGroupNumbers(); foreach (int i in intArr) { Console.WriteLine(i); //输出0 1 0始终代表整个表达式,1就是你自己括起来的我那组 } string[] strGroup = reg2.GetGroupNames(); foreach (string str in strGroup) { Console.WriteLine(str); //输出0 数字分组 至于整个表达式指定不指定意义都不大,反正你肯定知道0是整个组 } Console.WriteLine(reg2.GroupNameFromNumber(1)); //输出 数字分组,根据组号,获取组名 Console.WriteLine(reg2.GroupNumberFromName("数字分组")); //输出 1 根据组名获取组号 Console.ReadKey(); }
C#常用正则表达式
"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
只能输入数字:“^[0-9]*$”
只能输入n位的数字:“^\d{n}$”
只能输入至少n位数字:“^\d{n,}$”
只能输入m到n位数字:“^\d{m,n}$”
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入非零的正整数:“^\+?[1-9][0-9]*$”
只能输入非零的负整数:“^\-[1-9][0-9]*$”
只能输入长度为3的字符:“^.{3}$”
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
只能输入由数字、26个英文字母或者下划线组成的字符串:“^\w+$”
验证用户密码:“^[a-zA-Z]\w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
只能包含字符、数字和下划线。
验证是否含有^%&',;=?$\"等字符:“[^%&',;=?$\x22]+”
只能输入汉字:“^[\u4e00-\u9fa5],{0,}$”
验证Email地址:“^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$”
验证InternetURL:“^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$”
验证电话号码:“^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$”
正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
验证身份证号(15位或18位数字):“^\d{15}|\d{18}$”
验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
正确格式为:“01”“09”和“1”“31”。
浙公网安备 33010602011771号