论文部分内容阅读
摘要: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-),男,黑龙江鹤岗人,学士学位,中级讲师,计算机教学,研究方向:计算机网络技术、计算机应用技术。
关键词:字符串;正则表达式;验证
中图分类号: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-),男,黑龙江鹤岗人,学士学位,中级讲师,计算机教学,研究方向:计算机网络技术、计算机应用技术。