如何利用正则表达式验证输入的字符串

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:chenwoyu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Web应用程序经常会对输入的字符串进行验证,传统的方法是使用Java Script进行一些常用的字符串的验证。本文是基于.NET平台的新功能,利用正则表达式,使用Regex类,对输入的字符串进行验证的方法。
  关键词:字符串;正则表达式;验证
  中图分类号:TP31 文献标识码:A文章编号:1007-9599 (2013) 05-0000-02
  1引言
  在.net环境下开发WEB应用系统时,需要对一些输入的字符串进行验证,例如在开发图书馆管理系统过程中,需要对电话、金额、E-mail、号码和网址等进行验证。由于很多系统的模块都需要类似的这些验证,因此可以将这些验证写到一个公共类中,在其它的页面只需要进行调用就可以了。在C#中可以使用Regex类,也就是正则表达式类对字符串进行验证,该类位于System.Text.Tegular Expressions命名空间下,主要用来使用正则表达式对输入的字符串进行验证。
  2正则表达式的定义
  正则表达式是描述字符串的一种匹配模式,是检查某个字符串有没有包含某子串、可以替换匹配的子串或从一个字符串中取出符合设定条件的子串等。
  3利用正则表达式验证输入字符串
  Regex类表示.NET Framework 的正则表达式引擎。在迅速分析文体后查找指字的字符模式。
  在C#中,如果要使用正则表达式类,需要引用RegularExpression命名空间。也就是在源文件开头处添加语句 using System.Text.RegularExpressions;
  在C#中对输入的字符串进行验证主要使用Regex.IsMatch 方法验证。该方法是指示 Regex 构造函数中指定的正则表达式在指定的输入字符串中有没有找到能匹配的项。此方法有多种重载形式,本文实例所使用的语法是:public bool IsMatch (string input)。
  参数说明:
  Input:搜索匹配项的字符串,类型是String。返回值类型是Boolean,如果正则表达式找到匹配项,则为true;否则,为false。
  3.1验证E-mail格式的输入
  在验证E-mail格式是否输入正确时,需要先知道E-mail地址格式的要求。我们在网易、新浪、雅虎等各大网站注册邮箱时,网站都对电子邮箱的格式都进行要求。例如网易对邮件地址的要求是:6-18个字符,可使用字母、数字、下划线,需以字母开头。新浪网对邮件地址的要求是:邮箱名可以由a-z的小写英文字母、0-9的数字、下划线组成,长度在4-16个字符,不能单独使用数字作为邮箱名。
  雅虎对帐号的要求是4至32个字符、包括字母、数字、下划线、单点(.),且必须以英文字母开始。根据这些要求,邮箱[email protected]就是正确的邮箱地址,而124*[email protected]就是错误的邮箱地址。例如以下就是验证E-mail格式是否正确的主要代码:
  public bool Emailcheck(string strEmail)
  {
   return Regex.IsMatch(strEmail,"^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$");
  }
  w表示任意字符单词,数字、下划线和字母等字符都可以使用,和[a-zA-Z0-9] 是相等的;^是头匹配字符,匹配是从第一个字符开始的;|代表的关系是或;+例如ef+d表示可以有多个或一个f在f+处; *例如ef*d表示允许有多个或没有f在f*处;$为匹配;@前面代表为任何字符单词开始,可加多个句号或减号在字符中间;
  3.2验证IP地址格式的输入
  验证IP地址是否输入正确使用"^"+shu+"//."+shu+"//."+shu+"//."+shu+"$"表达式。IP地址要求每个段的数字不能大于255。
  验证IP地址格式的主要代码如下:
  public bool IPyanzheng(string IPdz)
  {
  string shu = "(25[0-5]|2[0-4]//d|[0-1]//d{2}|[1-9]?//d)";
  return Regex.IsMatch(IPdz,("^"+shu+"//."+shu+"//."+shu+"//."+shu+"$"));
   }
  正则表达式(25[0-5]|2[0-4]d|((1d{2})|([1-9]?d)))就是0-255的正则表达式。正则表达式25[0-5]表示一个三位数字,意思是个位数字是0-5,十位数字是5,百位数字是2。正则表达式2[0-4]d表示一个三位数,意思是个位数字是0-9,十位数字是0-4,百位数字是2。正则表达式[1-9]?d表示0-99,那么用正则表达式(1d{2})|([1-9]?d)表示0-199。
  3.3验证URL地址格式的输入
  在本例使用表达式“http(s)?://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?”来进行验证。
  主要代码如下:
  private void URLbtn_Click(object sender, EventArgs e)
  {
  if (!Urlcheck(URLtextBox.Text))
  { MessageBox.Show("不正确的网址格式!"); }
  else
  { MessageBox.Show("正确的网址格式!"); }
  }
  public bool Urlcheck(string strurl)
  {
  return System.Text.RegularExpressions.Regex.IsMatch(strurl, @"http(s)?://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?");
   }
  3.4验证电话号格式的输入
  在中国境内电话号码是由区号和本地电话号组成。区号是3-4位号码,本地电话号是6-8位号码。在本例中使用表达式“^(/d{3,4}-)?/d{6,8}$”来验证。
  主要代码如下:
  private void telbtn_Click(object sender, EventArgs e)
  {
  if (!Telyanzheng(teltextbox.Text))
  { MessageBox.Show("错误的电话号码格式"); }
  else { MessageBox.Show("正确的电话号码格式"); }
  }
  public bool Telyanzheng(string str_tel)
  {
  return System.Text.RegularExpressions.Regex.IsMatch(str_tel, @"^(/d{3,4}-)?/d{6,8}$");
   }
  4結语
  可见,在C#中使用正则表达式的Regex类的IsMatch方法可以对很多输入进行验证,本文只简单介绍了几种。在.net环境下使用C#语言开发各类系统时在进行输入验证时都可以使用正则表达式,简单又方便。
  参考文献:
  [1]刘小波,谢芊,李留英.应用正则表达式在ASP.NET中实现优化的输入验证方法[J].现代图书情报技术,2005,10.
  [作者简介]周广深(1979-),男,黑龙江鹤岗人,学士学位,中级讲师,计算机教学,研究方向:计算机网络技术、计算机应用技术。
  
其他文献
通过现场使用案例对一种端吸泵在使用过程中出现轴承损坏和密封失效的原因进行分析,总结了可能引起损坏的各种原因,再根据现场情况逐一排查,找到可能引起密封及轴承失效的原
随着信息技术的迅猛发展,计算机已被广泛应用于人们日常生活的方方面面,在计算机深刻改变着我们的生活方式的今天,对这一商务、学习、工作的工具进行基本的维护与维修已经是当前
摘 要:计算机网络在教学实践中的开发和应用,需要建设计算机技术学的专业特色,建构计算机理论与资源的学习基础,搭建网络学习的优良环境,还要进行计算机网络资源的分类管理。此外,还要用实际行动来支持网络教育教学活动,使网络教学成为改革传统教学的抓手和成为学生自主学习的平台。  关键词:计算机网络;共享资源;改革传统;改革自主学习  中图分类号:TP391.41-4  如今的实际教学领域,丝毫也离不开运用
摘要:对互联网网络性能进行有效的测量是网络运营商、服务提供商和网络用户共同关注的问题。目前关于网络性能测量的研究很深入,产生了大量的测量工具。但这些工具适用的网络环境各有不同,功能也各有优缺,而且绝大多数都是基于端到端的,使测量工作受到很大的限制。本文将简要分析网络性能测量及测量工具发展现状,介绍一种基于单点控制的测量网络性能的工具—pathneck,通过测试实验对其进行分析研究。  关键词:网络
本文采用问卷调查法、综合分析法、文献资料法、专家访谈法等方法进行研究。研究表明微博客对青少年获取知识、提高创造力、青少年社会化进程有积极作用,然而长期使用微博客会
ilasII是一种图书馆专用的数据库,它是由深圳图书馆利用UNIX系统作为平台进行开发的,该系统平台为国际互联网通用的平台。其无论是在运行的环境,还是数据库的开发设计,以及相关的功能设计和操作界面,都是针对图书馆管理的特点以及实际需求出发的,其最大的特点就是实用,并且不用考虑图书馆的规模大小,也不受图书馆的类型限制.不过在实际的应用中.我们经常会出现由于人为的失误而导致错误的发生,因此我们就来看一
【摘 要】当前,我们的社会是变化发展的,时代也是更新变化的,我们所接触的信息更新周期也是非常短的,这就意味着社会对于人才的考验是非常严格的,对于落后于时代的人来说,很可能被时代的发展所掩盖,这就要求我们需要时刻更新自己的信息,跟上时代的发展,而当前时代更多的需要的是创新型、全能型人才,我们需要不断的培养自己的创新能力,让自己的各项素质跟得上时代的要求。那么今天我想说也是创新能力的要求也就是小学数学