[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法

工具版本:VS2008

平台版本:.NET Framework 3.5

应用程序类型:ASP .NET


1 问题

用户可以在TextBox控件中输入任意的内容,如果用户输入与程序所需要的内容不一致,程序就不会得到正确的结果,程序还有可能出现意想不到的错误。


如以下例子:

Table 1. .aspx前台代码(片段)

1.        <asp:Label ID="Label1" runat="server" Text="请在下框中输入[0,999]之间的数"></asp:Label>

2.        <br />

3.            

4.        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

5.        <br />

6.                    

7.        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="提交" />


此段代码其设计模式下的效果为:


Figure1. 前台代码效果


提交按钮的后台函数“Button1_Click”的内容为:

1.         //提交按钮的后台函数

2.         protected void Button1_Click( object sender, EventArgs e )

3.         {

4.                  this.ClientScript.RegisterStartupScript( this.GetType( ), "", "<script>alert('恭喜提交成功,您提交的数字是:" + TextBox1.Text.ToString( ) +  "')</script>" );

5.         }


在VS2008中运行此程序,并往TextBox中输入任意类容后点击提交按钮,得到以下结果:

[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法_第1张图片
Figure2. 程序运行结果

点击提交按钮后,程序弹出“您提交的数字是:lab”,显然程序结果不对。如果程序将TextBox中的内容做算术运算,程序还可能会出现意想不到的错误。为了避免这种情况,采用验证控件来约束用户的输入。


2 解决方法

为TextBox添加验证控件,通过验证控件为TextBox添加输入范围,如果输入不符合验证控件所设置的输入范围,则提示用户重新输入。直至用户的输入合法为止。


3 使用验证控件

3.1 设置

在1的前台代码的基础上,在TextBox的右边添加一个RegularExpressionValidator控件。选中此控件,右键 >> 属性,将其ErrorMessage属性设置为“左方框中只能输入[0, 999]之间的数;将其ControlToValidate属性设置选为左边方框的id(TextBox1);将其ValidationExpression设置为约束TextBox1输入的正则表达式,如此处输入是少于3位数字,则对应的正则表达式为^\d{3,}$。


以下是对RegularExpressionValidator属性的设置图:

[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法_第2张图片

Figure3. RegularExpressionValidator控件的三大主要属性设置

基于1加上验证控件的所有的前台代码为:

1.        <asp:Label ID="Label1" runat="server" Text="请在下框中输入[0,999]之间的数"></asp:Label>

2.        <br />

3.            

4.        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

5.        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"

6.               ControlToValidate="TextBox1" ErrorMessage="左框中只能输入[0,999]之间的数"

7.                ValidationExpression="^\d{3,}$">

8.        </asp:RegularExpressionValidator>

9.        <br />

10.                

11.    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="提交" />

其它地方保持不变。此时若输入与正则表达式要求不一样的输入时,验证控件就会弹出提示让用户重新输入,而不会响应提交按钮对应的后台代码。如下图:

Figure4. 输入不符合与TextBox绑定的验证控件内的正则表达式时


[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法_第3张图片

Figure5. 输入符合正则表达式

3.2 ASP.NET 用正则表达式约束输入

实现一些约束基本输入的正则表达式,搜“ASP.NET 正则表达式”。


(1) 匹配n位的数字

RegularExpressionValidator控件的ValidationExpression属性对应的正则表达式为:^\d{n}$。n为数字的位数。


(2) 匹配大于等于n位的数字

如3.1所示,此时的正则表达式为^\d{n,}$。n为数字的位数。


(3) 匹配数字

正则表达式为:^\d+$


(4) 匹配字符

正则表达式为:^[A-Za-z]


(5) 匹配正浮点

正则表达式可以为:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$


(6) 匹配正浮点或者整数

正则表达式可以为:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|^\d+$


4 测试结果

(1) 匹配n位的数字

[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法_第4张图片

Figure6. 输入不为3位数字的提示

(3) 匹配数字

[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法_第5张图片

Figure7. 输入只能为数字的验证

(4) 匹配字符

[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法_第6张图片

Figure8. 只能输入字符的验证(忽略提示)

(6) 匹配正浮点或者整数

[ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法_第7张图片

Figure9. 输入只能为整数或浮点数的验证


[2015.1.3]

ASP.NET Note Over.

你可能感兴趣的:([ASP.NET-VII] ASP.NET 使用验证控件(RegularExpressionValidator)验证输入(TextBox)中的输入是否合法)