C# 正则表达式验证结果

C# 正则表达式验证结果,c#,regex,validation,C#,Regex,Validation,在web表单中,我有一个带有RegularExpressionValidator的TextBox对象。我的问题是,当文本框为空时,验证器返回我的字符串(空字符串)是有效的,但当我想使用同一表达式的代码中的Regex对象再次检查时,结果是空字符串与表达式不匹配。为什么会发生这种情况 这是我的密码: ASPX: 下面是该页面的屏幕截图: 正则表达式验证程序不会因空字符串而失效。您需要在reg ex中考虑到这一点,或者进行必要的验证,但我不理解,如果验证器没有验证空字符串,如果我的正则表达式没有进行验

在web表单中,我有一个带有RegularExpressionValidator的TextBox对象。我的问题是,当文本框为空时,验证器返回我的字符串(空字符串)是有效的,但当我想使用同一表达式的代码中的Regex对象再次检查时,结果是空字符串与表达式不匹配。为什么会发生这种情况

这是我的密码:

ASPX:

下面是该页面的屏幕截图:


正则表达式验证程序不会因空字符串而失效。您需要在reg ex中考虑到这一点,或者进行必要的验证,但我不理解,如果验证器没有验证空字符串,如果我的正则表达式没有进行验证,为什么它会返回空字符串与我的正则表达式匹配?@Buda Gavril为什么要检查客户端和服务器端的RegularExpressionValidator?您的正则表达式要求字符串包含内容,而正则表达式验证程序不需要。因此,页面是有效的,但内容“不同”,因为您的正则表达式不“匹配”@BudaGavril Yes,如果您在上检查备注,您将看到
验证成功,如果输入控件为空。如果相关输入控件需要一个值,除了RegularExpressionValidator控件外,还可以使用RequiredFieldValidator控件。
<table style="background-color:#eeeeee; padding:10">
          <tr valign="top">
             <td colspan="3">
                <asp:Label ID="lblOutput" 
                     Text="Enter a 5-digit ZIP Code" 
                     runat="server"
                     AssociatedControlID="TextBox1"/>
             </td>
          </tr>

          <tr>
             <td colspan="3">
                <b>Personal Information</b>
             </td>
          </tr>
          <tr>
             <td align="right">
                Zip Code:
             </td>
             <td>
                <asp:TextBox id="TextBox1" 
                     runat="server"/>
             </td>
             <td>
                <asp:RegularExpressionValidator id="RegularExpressionValidator1" 
                     ControlToValidate="TextBox1"
                     ValidationExpression="^\d\d*$"
                     Display="Static"
                     ErrorMessage="ZIP code must be 5 numeric digits"
                     EnableClientScript="False" 
                     runat="server"/>
             </td>
          </tr>
          <tr>
             <td></td>
             <td>
                <asp:Button ID="Button1" text="Validate" 
                     OnClick="ValidateBtn_Click" 
                     runat="server" />
             </td>
             <td></td>
          </tr>
       </table>
protected void ValidateBtn_Click(Object sender, EventArgs e)
        {


            RegularExpressionValidator minValidator = (RegularExpressionValidator)FindControl("RegularExpressionValidator1");
            minValidator.Validate();
            if (!minValidator.IsValid)
            {
                lblOutput.Text = "Page is InValid.";
            }
            else
            {
                lblOutput.Text = "Page is Valid.";
            }
            String exp = @"^\d\d*$";
            Regex r = new Regex(exp);
            if (r.IsMatch(TextBox1.Text))
            {
                Response.Write("strings matches");
            }
            else
            {
                Response.Write("strings does not matches");
            }

        }