RegularExpressionValidator控件
1.功能
RegularExpressionValidator控件用于检查输入控件是否与指定的正则表达式的值相匹配。验证类型可以检查各种数字是否正确、输入的字符串位数、输入日期格式和电话号码等等。
2. 属性
RegularExpressionValidator控件部分常用属性及说明如表1所示。
表1 RegularExpressionValidator控件最常用的属性
属性
描述
ControlToValidate
该属性获取或设置要验证的输入控件
Display
该属性获取或设置验证控件中错误信息的显示行为
ErrorMessage
该属性获取或设置验证失败时 ValidationSummary 控件中显示的错误信息的文本
Text
该属性获取或设置验证失败时验证控件中显示的文本
ValidationExpression
该属性获取或设置确定字段验证模式的正则表达式
RegularExpressionValidator控件的部分属性与RequiredFieldValidator控件的属性基本相同。下面介绍RegularExpressionValidator控件特有的属性,ValidationExpression属性。
该属性获取或设置被指定为验证条件的正则表达式。默认值为空字符串("")。
语法:
public string ValidationExpression { get; set; }
属性值;被指定为验证条件的正则表达式。
常用的正则表达式字符及其含义如表2所示。
表2 常用正则表达式字符及其含义
正则表达式字符
描述
[……]
匹配括号中的任何一个字符
[^……]
匹配不在括号中的任何一个字符
/w
匹配任何一个字符(a~z、A~Z和0~9)
/W
匹配任何一个空白字符
/s
匹配任何一个非空白字符
/S
与任何非单词字符匹配
/d
匹配任何一个数字(0~9)
/D
匹配任何一个非数字(^0~9)
[/b]
匹配一个退格键字母
{n,m}
最少匹配前面表达式n次,最大为m次
{n,}
最少匹配前面表达式n次
{n}
恰恰匹配前面表达式为n次
?
匹配前面表达式0或1次{0,1}
+
至少匹配前面表达式1次{1,}
*
至少匹配前面表达式0次{0,}
|
匹配前面表达式或后面表达式
(…)
在单元中组合项目
^
匹配字符串的开头
$
匹配字符串的结尾
/b
匹配字符边界
/B
匹配非字符边界的某个位置
下面再来列举几个常用的正则表达式。
验证电子邮件:
/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
验证网址:
HTTP:///S+/./S+
验证邮政编码:
/d{6}
[0-9]:表示0~9十个数字。
/d*:表示任意个数字。
/d{3,4}-/d{7,8}:表示中国大陆的固定电话号码。
/d{2}-/d{5}:验证由两位数字、一个连字符再加5位数字组成的ID号。
</s*(/S+)(/s[^>]*)?>[/s/S]*</s*///l/s*>:匹配HTML标记。
身份证:/d{17}[/d|X]|/d{15}
示例 ValidationExpression属性设置
本例实现的是,设置RegularExpressionValidator控件的ValidationExpression属性来验证文本框中输入的Email格式是否正确。
代码如下。
protected void Page_Load(object sender, EventArgs e)
{
this.RegularExpressionValidator1.ControlToValidate = "txtEmail";//在验证控件的ID
this.RegularExpressionValidator1.ErrorMessage = "邮箱格式不正确";
this.RegularExpressionValidator1.ValidationExpression = "//w+([-+.]//w+)*@//w+([-.]//w+)*//.//w+([-.]//w+)*";
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('密码已发送到邮箱,请注意查收')</script>");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Write("<script>window.close();</script>");
}
3. 典型实例
例1 验证URL
本例使用RegularExpressionValidator控件和正则表达式验证输入的网址是否正确。运行本实例,在文本框中输入http:///soasp 错误网址,然后单击“验证”按钮。
代码如下。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1"
ErrorMessage="URL地址输入不正确!" ValidationExpression='http(s)?://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?'></asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
ErrorMessage="URL地址输入不能为空!">
</asp:RequiredFieldValidator>
例2 验证手机号码
本例实现了使用RegularExpressionValidator控件和正则表达式验证手机号码的格式是否正确。运行本实例,在文本框中输入错误的手机号码格式,单击“验证”按钮。
主要代码如下。 <table>
<tr>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
ErrorMessage="手机号输入不能为空!" Width="161px"></asp:RequiredFieldValidator></td>
<td>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="手机号输入错误!" ValidationExpression="^[1]+[3,5]+/d{9}"></asp:RegularExpressionValidator>
</td>
</tr>
</table>
转载声明: 本文转自http://blog.163.com/mushroom_0/blog/static/122835473200971954950230/
==========================================================================
RegularExpressionValidator
我们在制作网站的时候,尤其是各种电子商务网站,首先都会让用户填写一些表格来获取注册用户的各种信息,因为用户有可能输入各式各样的信息,而有 些不符合要求的数据会给我们的后端ASP处理程序带来不必要的麻烦,甚至导致网站出现一些安全问题。因此我们在将这些信息保存到网站的数据库之前,要对这 些用户所输入的信息进行数据的合法性校验,以便后面的程序可以安全顺利的执行。
使用RegularExpressionValidator服务器控件,可以用来检查我们输入的信息是否和我们的自定义的表达式一致。比方说用它可以检查e-mail地址,电话号码等合法性。
在讲述RegularExpressionValidator服务器控件使用之前,我们先来了解一下正则表达式(RegularExpression)的来源:
正 则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因 此采用“正则表达式”这个术语。随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
其实,正则表达式(RegularExpression)是一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索 的字符串进行匹配。
使用正则表达式,就可以:
1. 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
2. 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
3. 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
例如,如果需要搜索整个 web 站点来删除某些过时的材料并替换某些HTML 格式化标记,则可以使用正则表达式对每个文件进行测试,看在该文件中是否存在所要查找的材料或 HTML 格式化标记。用这个方法,就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料,最后,可以再次使 用正则表达式来查找并替换那些需要替换的标记。
另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript 是 Visual Basic 的一个子集,具有丰富的字符串处理功能。与 C 类似的 Visual Basic Scripting Edition 则没有这一能力。正则表达式给 Visual Basic Scripting Edition 的字符串处理能力带来了明显改善。不过,可能还是在 VBScript 中使用正则表达式的效率更高,它允许在单个表达式中执行多个字符串操作。
正是由于“正则表达式”的强大功能,才使得微软慢慢将正则表达式对象移植到了视窗系统上面。在书写正则表达式的模式时使用了特殊的字符和序列。下表描述了可以使用的