时间:2021-05-20
目前为止,许多编程语言和工具都包含对正则表达式的支持,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一样的元字符,下表列出了一些常用的元字符:
表一常用的元字符
转义字符
如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\.
例如:unibetter\.com匹配unibetter.com,C:\\Windows匹配C:\Windows。
限定符
限定符又叫重复描述字符,表示一个字符要出现的次数。比如我们在匹配电话号码时使用的{3,4}就表示出现3到4次。常用的限定符有:
表二常用的限定符
正则表达式在程序设计中有着重要的位置,它经常被用于处理字符串信息,下面是正则常用的一些实例。
//验证电话号码<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}))$");}//验证IPpublic 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 + "$"));}//验证Urlpublic bool IsUrl(string str_url){return System.Text.RegularExpressions.Regex.IsMatch(str_url, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");}虽然现在很多验证都由前端,但是掌握正则表达式会让你在程序开发过程中快速解决很多东西,特别是在处理字符串的时候,算是比较全面的正则用法,如果有需要可联系我,可直接运行的源码。
以上所述是小编给大家介绍的C#中常用的正则表达式小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
js中的正则表达式比起C#中的正则表达式要弱很多,但基本够用了1定义正则表达式2关于验证的三个这则表达式方法3正则表达式式的转义字符1定义正则表达式在js中定义
下面是几个C#常用正则表达式的总结:usingSystem;usingSystem.Text.RegularExpressions;namespaceCom
本文实例讲述了C#正则表达式Regex类用法,分享给大家供大家参考。具体实现方法如下:一、在C#中,要使用正则表达式类,请在源文件开头处添加以下语句:复制代码代
本文介绍在C#中使用匹配中文的正则表达式,包括纯中文、有中文、中文开头、中文结尾等几个正则表达式示例。在正则表达式中,中文可以通过Unicode编码来确定正则表
感谢AKA及作者。Perl中的正则表达式正则表达式的三种形式正则表达式中的常用模式正则表达式的8大原则 正则表达式是Perl语言的一大特色,也是Perl程序中