服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#中常用的正则表达式实例

C#中常用的正则表达式实例

2021-12-08 13:01虾BB C#

正则表达式在程序设计中有着重要的位置,它经常被用于处理字符串信息,下面是C#中常用的正则表达式实例,感兴趣的朋友一起看看吧

目前为止,许多编程语言和工具都包含对正则表达式的支持,c#也不例外,c#基础类库中包含有一个命名空间(system.text.regularexpressions)和一系列可以充分发挥规则表达式威力的类(regex、match、group等)。那么,什么是正则表达式,怎么定义正则表达式呢?

正则表达式基础

 什么是正则表达式

   在编写字符串的处理程序时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
    通常,我们在使用windows查找文件时,会使用通配符(*和?)。如果你想查找某个目录下的所有word文档时,你就可以使用*.doc进行查找,在这里,*就被解释为任意字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂。

   一个简单的例子——验证电话号码

学习正则表达式的最好方法是从例子开始,下面我们从验证电话号码开始,一步一步的了解正则表达式。

在我们国家,电话号码(如:0379-65624150)通常包含3到4为以0开头的区号和一个7或8为的号码,中间通常以连字符'-'隔开。在这个例子中,首先我们要介绍一个元字符\d,它用来匹配一个0到9的数字。这个正则表达式可以写成:^0\d{2,3}-\d{7,8}$

我们来对他进行分析,0匹配数字“0”,\d匹配一个数字,{2,3}表示重复2到3次,-只匹配”-”自身,接下来的\d同样匹配一个数字,而 {7,8}则表示重复7到8次。当然,电话号码还可以写成 (0379)65624150,这里就交给读者完成。

 元字符

在上面的例子中,我们接触到了一个元字符\d,正如你所想的,正则表达式还有很多像\d一样的元字符,下表列出了一些常用的元字符:

C#中常用的正则表达式实例

表一常用的元字符

 转义字符

   如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\.

例如:unibetter\.com匹配unibetter.com,c:\\windows匹配c:\windows。

 限定符

限定符又叫重复描述字符,表示一个字符要出现的次数。比如我们在匹配电话号码时使用的{3,4}就表示出现3到4次。常用的限定符有:

C#中常用的正则表达式实例

表二常用的限定符

正则表达式在程序设计中有着重要的位置,它经常被用于处理字符串信息,下面是正则常用的一些实例。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
//验证电话号码<br>public bool istelephone(string str_telephone)
{
return system.text.regularexpressions.
regex.ismatch(str_telephone, @"^(\d{3,4}-)?\d{6,8}$");
}
//验证密码
public bool ispassword(string str_password)
{
return system.text.regularexpressions.
regex.ismatch(str_password, @"[a-za-z]+[0-9]");
}
//验证邮政编码
public bool ispostalcode(string str_postalcode)
{
return system.text.regularexpressions.
regex.ismatch(str_postalcode, @"^\d{6}$");
}
//验证手机号码
public bool ishandset(string str_handset)
{
return system.text.regularexpressions.regex.
ismatch(str_handset, @"^[1][3-5]\d{9}$");
}
//验证身份证
public bool isidcard(string str_idcard)
{
return system.text.regularexpressions.regex.
ismatch(str_idcard, @"(^\d{18}$)|(^\d{15}$)");
}
//验证小数格式
public bool isdecimal(string str_decimal)
{
return system.text.regularexpressions.regex.
ismatch(str_decimal, @"^[0-9]+\.[0-9]{2}$");
}
//验证月份
public bool ismonth(string str_month)
{
return system.text.regularexpressions.regex.
ismatch(str_month, @"^(0?[[1-9]|1[0-2])$");
}
//验证天数
public bool isday(string str_day)
{
return system.text.regularexpressions.regex.
ismatch(str_day, @"^((0?[1-9])|((1|2)[0-9])|30|31)$");
}
//验证是否为数字
public bool isnumber(string str_number)
{
return system.text.regularexpressions.regex.
ismatch(str_number, @"^[0-9]*$");
}
//验证密码长度
public bool ispasswlength(string str_length)
{
return system.text.regularexpressions.regex.
ismatch(str_length, @"^\d{6,18}$");
}
//验证正整数
public bool isintnumber(string str_intnumber)
{
return system.text.regularexpressions.regex.
ismatch(str_intnumber, @"^\+?[1-9][0-9]*$");
}
//验证大小写
public bool isupchar(string str_upchar)
{
return system.text.regularexpressions.regex.
ismatch(str_upchar, @"^[a-z]+$");
}
public bool islowerchar(string str_upchar)
{
return system.text.regularexpressions.regex.
ismatch(str_upchar, @"^[a-z]+$");
}
//验证是否为字母
public bool isletter(string str_letter)
{
return system.text.regularexpressions.regex.
ismatch(str_letter, @"^[a-za-z]+$");
}
//验证是否为中文
public bool ischinese(string str_chinese)
{
return system.text.regularexpressions.regex.
ismatch(str_chinese, @"^[\u4e00-\u9fa5]{1,}$");
}
//验证邮箱
public bool isemail(string str_email)
{
return system.text.regularexpressions.regex.ismatch(str_email,
@"^(([\w\.]+)@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))|((\w+\.?)+)@([a-za-z]{2,4}|[0-9]{1,3})(\.[a-za-z]{2,4}))$");
}
//验证ip
public bool ipcheck(string ip)
{
string num = @"(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)";
return regex.ismatch(ip,
("^" + num + "\\." + num + "\\." + num + "\\." + num + "$"));
}
//验证url
public bool isurl(string str_url)
{
return system.text.regularexpressions.regex.ismatch(str_url,
@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
}

虽然现在很多验证都由前端,但是掌握正则表达式会让你在程序开发过程中快速解决很多东西,特别是在处理字符串的时候,算是比较全面的正则用法,如果有需要可联系我,可直接运行的源码。

以上所述是小编给大家介绍的c#中常用的正则表达式小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:http://www.cnblogs.com/Liuxiong/archive/2016/10/13/5954926.html

延伸 · 阅读

精彩推荐
  • C#C#直线的最小二乘法线性回归运算实例

    C#直线的最小二乘法线性回归运算实例

    这篇文章主要介绍了C#直线的最小二乘法线性回归运算方法,实例分析了给定一组点,用最小二乘法进行线性回归运算的实现技巧,具有一定参考借鉴价值,需要...

    北风其凉8912021-10-18
  • C#c#学习之30分钟学会XAML

    c#学习之30分钟学会XAML

    一个界面程序的核心,无疑就是界面和后台代码,而xaml就是微软为构建应用程序界面而创建的一种描述性语言,也就是说,这东西是搞界面的...

    C#教程网8812021-12-10
  • C#C#基础之泛型

    C#基础之泛型

    泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能。接下来通过本文给大家介绍c#基础之泛型,感兴趣的朋友一起学习吧...

    方小白7732021-12-03
  • C#Unity3D UGUI实现缩放循环拖动卡牌展示效果

    Unity3D UGUI实现缩放循环拖动卡牌展示效果

    这篇文章主要为大家详细介绍了Unity3D UGUI实现缩放循环拖动展示卡牌效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参...

    诗远3662022-03-11
  • C#C# 后台处理图片的几种方法

    C# 后台处理图片的几种方法

    本篇文章主要介绍了C# 后台处理图片的几种方法,非常具有实用价值,需要的朋友可以参考下。...

    IT小伙儿10162021-12-08
  • C#C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

    C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

    这篇文章主要介绍了C#实现的文件操作封装类,结合完整实例形式分析了C#封装文件的删除,移动,复制,重命名等操作相关实现技巧,需要的朋友可以参考下...

    Rising_Sun3892021-12-28
  • C#浅谈C# winForm 窗体闪烁的问题

    浅谈C# winForm 窗体闪烁的问题

    下面小编就为大家带来一篇浅谈C# winForm 窗体闪烁的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    C#教程网7962021-12-21
  • C#聊一聊C#接口问题 新手速来围观

    聊一聊C#接口问题 新手速来围观

    聊一聊C#接口问题,新手速来围观,一个通俗易懂的例子帮助大家更好的理解C#接口问题,感兴趣的小伙伴们可以参考一下...

    zenkey7072021-12-03