如何:根据模式对 ASP.NET 服务器控件进行验证

更新:2007 年 11 月

您可以检查用户输入是否匹配预定义的模式,例如电话号码、邮编、电子邮件地址等等。要进行这一验证,需要使用正则表达式。有关正则表达式的更多信息,请参见 .NET Framework 正则表达式

6xh899wy.alert_security(zh-cn,VS.90).gif安全说明:

默认情况下,ASP.NET 网页自动验证是否有恶意用户试图向您的应用程序发送脚本或 HTML 元素。有关更多信息,请参见脚本侵入概述

对照正则表达式进行验证

  1. RegularExpressionValidator 控件添加到页中并设置下列属性:

    属性

    说明

    ControlToValidate

    正在验证的控件的 ID。

    ErrorMessage, Text, Display

    这些属性指定验证失败时要显示的错误的文本和位置。有关详细信息,请参见如何:控制 ASP.NET 服务器控件的验证错误信息显示

  2. 通过将 ValidationExpression 属性设置为正则表达式来设置要比较的模式。

    6xh899wy.alert_note(zh-cn,VS.90).gif说明:

    如果您正在使用诸如 Visual Studio .NET 2005 这样的可视化设计器,您可以从 RegularExpressionValidator 控件中定义的预定义模式中选择。

    如果要允许多种有效模式,请使用条形符 (|) 来分隔表达式。

    6xh899wy.alert_note(zh-cn,VS.90).gif说明:

    在客户端验证中,使用 ECMAScript (JavaScript) 计算正则表达式。这与服务器端的正则表达式检查略有不同。

  3. 在 ASP.NET 网页代码中添加测试,以检查有效性。有关详细信息,请参见如何:以编程方式测试 ASP.NET 服务器控件的有效性

    下面的代码示例显示如何使用 RegularExpressionValidator 控件检查用户是否输入了有效的美国邮政编码。验证器检查两种模式:5 位数字和 5 位数字加连字符再加另外 4 位数字。

    ZIP: <asp:TextBox id="txtZIP" runat="SERVER"></asp:TextBox>
         <asp:RegularExpressionValidator 
           id="txtZIP_validation" runat="SERVER" 
           ControlToValidate="txtZIP" 
           ErrorMessage="Enter a valid US ZIP code."
           ValidationExpression="\d{5}(-\d{4})?">
         </asp:RegularExpressionValidator>
    
    ZIP: <asp:TextBox id="txtZIP" runat="SERVER"></asp:TextBox>
         <asp:RegularExpressionValidator 
           id="txtZIP_validation" runat="SERVER" 
           ControlToValidate="txtZIP" 
           ErrorMessage="Enter a valid US ZIP code."
           ValidationExpression="\d{5}(-\d{4})?">
         </asp:RegularExpressionValidator>
    

请参见

概念

ASP.NET 服务器控件验证类型

其他资源

验证 ASP.NET 控件