- - PR -
RegularExpressionValidatorクラスとRegexクラスの正規表現による検証結果について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-10-07 13:03
こんにちは。
年月を表す「YYYY/MM」形式の文字列を正規表現で検証するために 「^(18|19|20)[0-9]{2}/(0[1-9]{1})|(1[0-2]{1})$」を考えました。 この正規表現が正しいかどうかを調べるため、 WebコントロールのRegularExpressionValidatorクラスと Regexクラスそれぞれで確かめてみました。 ■aspx <asp:Button id="Button1" runat="server" Text="Button"></asp:Button> <asp:TextBox id="TextBox1" runat="server"></asp:TextBox> <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator" ValidationExpression="^(18|19|20)[0-9]{2}/(0[1-9]{1})|(1[0-2]{1})$" ControlToValidate="TextBox1" EnableClientScript="False"> </asp:RegularExpressionValidator> ■Button1のClickイベントハンドラ Regex r = new Regex( RegularExpressionValidator1.ValidationExpression ); bool isValidRegex = r.IsMatch(TextBox1.Text); bool isValidValidator = RegularExpressionValidator1.IsValid; 上記のコードで、TextBox1に「2005/10」を入力すると isValidRegexには「True」が、isValidValidatorには「False」がセットされました。 VisualStudio2003のWebコントロールのRegularExpressionValidatorコントロールについて、 MSDNには「サーバーでは、 System.Text.RegularExpressions.Regex 構文を使用します」 と記述されております。 MSDN RegularExpressionValidator クラス このことから同じ正規表現であれば、 RegularExpressionValidatorコントロールのサーバー側による検証と Regexクラスによる検証は同じ結果となると認識していましたが、そうではないのでしょうか。 なぜこのようになるのかご存知の方みえましたら、ご教授いただければと思います。 よろしくお願いします。 環境:WindowsXP Pro、VisualStudio2003、ASP.NET C# |
1