0

テキストボックスへの入力を検証したいので、角括弧内に 6 文字 (オプションで 7 文字) を含める必要があります。これは、文字列全体ではなく、文字列内のどこにでも表示できます。有効な入力例: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プロパティPageが false になります。

興味深いことに、次の C# コードは(with text of )matchになります。trueHello [XX1111]

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

だから:ここで何をしています。式自体は正しいと思います。Regexクラスを使用して期待どおりに検証しますがRegularExpressionValidator、入力を検証しません。

4

1 に答える 1

1

問題は、残念ながら、このコントロールが入力アンカーの開始と終了を送信した正規表現に追加することです (そのことを文書化していません)...

つまり、.*両側で正規表現を囲む必要があります。バグと見なされる可能性があります...

于 2013-01-08T14:25:41.627 に答える