2013-01-08 49 views
0

我想驗證輸入到文本框中,因此它必須在方括號內包含六個(可選七個)字符。這可以出現在字符串中的任何地方,而不是整個字符串本身。例如有效輸入:Hello World [XX1111]RegularExpressionValidator對有效輸入返回false

我想出了以下正則表達式:\[.......?\]

然而,這種表達似乎並沒有一個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" /> 

即使有效輸入,使錯誤顯示,並且Page.IsValid屬性爲false。

有趣的是,下面的C#代碼將導致matchtrue(與Hello [XX1111]文本)

  Regex r = new Regex(rfvTest.ValidationExpression); 
      bool match = r.IsMatch(txtTest.Text); 

所以說:這是怎麼回事這裏。我相信表達式本身是正確的,它使用Regex類按預期驗證,但RegularExpressionValidator不會驗證輸入。

+0

如果只輸入與正則表達式(即[[xxxxxxx]')匹配的文本,該怎麼辦? – fge

+0

我想你需要在XML文件中雙重轉義反斜槓。 –

+0

...... [\ [。?。{6,} \]'? –

回答

1

的問題似乎是,這種控制不幸增加了開始輸入錨正則表達式您提交(並不會記錄在這樣做)的結束......

這意味着你必須環繞你的正則表達式與,是,.*在兩邊。可能被視爲bug ...