RegularExpressionValidator为有效输入返回false

时间:2013-01-08 14:13:17

标签: asp.net regex validation c#-4.0

我想验证输入到文本框中,因此它必须在方括号内包含六个(可选七个)字符。这可以出现在字符串中的任何位置,而不是整个字符串本身。示例有效输入:Hello World [XX1111]

我提出了以下正则表达式:\[.......?\]

但是,此表达式似乎不适用于RegularExpressionValidator

<asp:TextBox ID="txtTest" runat="server" />
<asp:RegularExpressionValidator ID="rfvTest" runat="server" ControlToValidate="txtTest" 
    ValidationExpression="\[.......?\]" ErrorMessage="Enter in the right format...">Enter in the right format</asp:RegularExpressionValidator>
<asp:Button ID="btnTest" runat="server" Text="test" />

即使有效输入,也会导致显示错误,并且.IsValid的{​​{1}}属性为false。

有趣的是,以下C#代码会导致Pagematch(文本为true

Hello [XX1111]

所以:这里有什么。我认为表达式本身是正确的,它使用 Regex r = new Regex(rfvTest.ValidationExpression); bool match = r.IsMatch(txtTest.Text); 类按预期验证,但Regex不会验证输入。

1 个答案:

答案 0 :(得分:1)

问题似乎是这个控件不幸地将输入锚的开头和结尾添加到你提交的正则表达式中(并没有记录它是这样做的)...

这意味着你必须用双方的.*包围你的正则表达式。可以被视为一个错误......