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一样的元字符,下表列出了一些常用的元字符:

表一常用的元字符

 转义字符

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

例如: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}))$");
}
//验证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#中常用的正则表达式小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • C#基于正则表达式抓取a标签链接和innerhtml的方法

    本文实例讲述了C#基于正则表达式抓取a标签链接和innerhtml的方法.分享给大家供大家参考,具体如下: //读取网页html string text = File.ReadAllText(Environment.CurrentDirectory + "//test.txt", Encoding.GetEncoding("gb2312")); string prttern = "<a(\\s+(href=\"(?<url>([

  • 谈谈C# replace在正则表达式中的意义

    多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼容. 此外,regexp类还能够完成一些其他的功能,例如从右至左的结合模式和表达式的编辑等. 在这篇文章中,我将简要地介绍System.Text.RegularExPRession中的类和方法.一些字符串匹配和替换的例子以及组结构的详细情况,最后,还会介绍一些你可能会用到的常见的表达式. 应该掌握的基础知识 规则表达式

  • C#中正则表达式的3种匹配模式

    在C#中,我们一般使用Regex类来表示一个正则表达式.一般正则表达式引擎支持以下3种匹配模式:单行模式(Singleline).多行模式(Multiline)与忽略大小写(IgnoreCase). 1. 单行模式(Singleline) MSDN定义:更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配). 使用单行模式的典型场景是获取网页源码中的信息. 示例: 我们使用WebBrowser控件,从http://www.xxx.com/1.htm上获取了如下HTM

  • C#中如何利用正则表达式判断字符

    废话不多说了,下面代码给大家介绍下利用正则表达式判断字符的方法,具体代码如下所示: using System; using System.Text.RegularExpressions; using System.NET; namespace 正则表达式检测字符串 { class Program { static void Main(string[] args) { Console.WriteLine("请输入字符串:"); string s = Console.ReadLine();

  • 学习正则表达式(js、C#)

    js中的正则表达式使用 function myValid() { var errorMsg = ""; var res = true; //拿到要验证的值. var receiveName = $("#receiveName").val();//姓名 var receiveMobile = $("#tMobile").val();//手机号 var validCode = $("#validCode").val();//验证码

  • C#正则表达式匹配与替换字符串功能示例

    本文实例讲述了C#正则表达式匹配与替换字符串功能.分享给大家供大家参考,具体如下: 事例一:\w+=>[A-Za-z1-9_],\s+=>任何空白字符,()=>捕获 string text = @"public string testMatchObj string s string match "; string pat = @"(\w+)\s+(string)"; // Compile the regular expression. Regex

  • C#基于正则表达式删除字符串中数字或非数字的方法

    本文实例讲述了C#基于正则表达式删除字符串中数字或非数字的方法.分享给大家供大家参考,具体如下: /// 去掉字符串中的数字 public static string RemoveNumber(string key) { return Regex.Replace(key, @"\d", ""); } //去掉字符串中的非数字 public static string RemoveNotNumber(string key) { return Regex.Replace

  • C#使用正则表达式抓取网站信息示例

    本文实例讲述了C#使用正则表达式抓取网站信息的方法.分享给大家供大家参考,具体如下: 这里以抓取京东商城商品详情为例. 1.创建JdRobber.cs程序类 public class JdRobber { /// <summary> /// 判断是否京东链接 /// </summary> /// <param name="param"></param> /// <returns></returns> public

  • 常用C#正则表达式汇总介绍

    有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参考手册>学习了一些基础的知识,同时也为我在CSDN大概赚了1000分,今天想起来,去找<C#字符串和正则表达式参考手册>时,已经不知所踪了.现在用到正则的时候也比较少,把以前的笔记等整理一下,以志不忘. (1)"@"符号 符下两ows表研究室的火热,当晨在"@"虽然并非C#正则表达式

  • C#基于正则表达式实现获取网页中所有信息的网页抓取类实例

    本文实例讲述了C#基于正则表达式实现获取网页中所有信息的网页抓取类.分享给大家供大家参考,具体如下: 类的代码: using System; using System.Data; using System.Configuration; using System.Net; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using

随机推荐