C#常用正则表达式
NET中的正则表达式是处于 System.Text.RegularExpressions 命名空间中的,该命名空间提供了正则表达式的各种强大的功能。
用的较多的类有:Group、GroupCollection、Match、MatchCollection、Regex
Regex 类表示不可变的正则表达式。
Regex 类包含几个 static 方法,这些方法和 Regex 对象方法的功能是一样的。在 .NET Framework 2.0 版中它们有点小区别。在.NET2.0中,将缓存通过调用静态方法而编译的正则表达式,而不会缓存通过调用实例方法而编译的正则表达式。默认情况下,正则表达式引擎将缓存 15 个最近使用的静态正则表达式。因此在经常用到一组固定的正则表达式时,宜采用静态方法。
注意:你可以通过设置静态属性 Regex.CacheSize 来动态改变已编译的正则表达式的当前静态缓存中的最大项数。
至于正则表达式的 字符类 ,在此就不作详细介绍。只列出几个常用的。
字符类 | 说明 |
[字符分组] | 匹配指定字符分组内的任一字符。 |
[^字符分组] | 匹配不在指定字符分组内的任一字符。 |
[第一个字符-最后一个字符] | 匹配字符范围中的任一字符。 |
\w | 与任何单词字符匹配。等效于 [a-zA-Z_0-9]。其中"_"表示字符"_"本身。 |
\W | 与任何非单词字符匹配。等效于 [^a-zA-Z_0-9]。 |
\s | 与任何空白字符匹配。等效于[ \f\n\r\t\v]。注意在"\f"前有一个空格。 |
\S | 与任何非空白字符匹配。等效于[^ \f\n\r\t\v]。 |
\d | 与任何十进制数字匹配。等效于[0-9]。 |
\D | 与任何非数字字符匹配。等效于[^0-9]。 |
下面先介绍Regex 类的常用方法和属性。
- 方法
名称 说明 IsMatch 已重载。 指示正则表达式在输入字符串中是否找到匹配项。 Match 已重载。 在输入字符串中搜索正则表达式的匹配项,并将第一个精确结果作为单个 Match 对象返回。 Matches 已重载。 在输入字符串中搜索正则表达式的所有匹配项并返回所有成功的匹配,就像多次调用 Match 一样。 Replace 已重载。 在指定的输入字符串内,使用指定的替换字符串替换与某个正则表达式模式匹配的字符串。 Split 已重载。 在由正则表达式匹配项定义的位置将输入字符串拆分为一个子字符串数组。
- 属性
名称 说明 CacheSize 获取或设置已编译的正则表达式的当前静态缓存中的最大项数。 Options 返回传入 Regex 构造函数的选项。 RightToLeft 获取一个值,该值指示正则表达式是否从右向左进行搜索。 其中Options是RegexOptions 枚举,它提供用于设置正则表达式选项。
注意此选项并非只能选其一,而是可以通过按位或符号"|"实现多个选项,比如:RegexOptions.Compiled | RegexOptions.IgnoreCase 是要求正则表达式既要编译为程序集,又要忽略大小写。
下面将通过实例来介绍各种方法的使用。
- Regex.IsMatch 方法——当你只想验证格式是否符合时用此方法
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”。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步