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