none
RegularExpressionValidatorでブランク文字列もValidation Failedにしたい RRS feed

  • 質問

  • お世話になっております。

    VB2008.NETで、ASP.NETアプリケーションを作成しています。

    RegularExpressionValidatorコントロールを利用して
    入力された文字列が電子メールアドレスの形式に合致するかを調べるとともに、
    入力必須の項目として、入力がない場合(あるいはブランク文字のみ)にもRegularExpressionの値検査でNGにするようにしたく思います。

    ValidationExpressionプロパティに

    ■RegularExpressionValidatorのプロパティビューで選択可能な電子メールアドレスの正規表現
    \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
    
    ■MSDNのページの説明 http://msdn.microsoft.com/ja-jp/library/ms998267.aspx
    ^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$
    


    をセットしてみますと、何か入力をして電子メールアドレス形式に合致していないときは検証エラーになります。
    しかし、なにも入力しないと、スルー(検証OK)されてしまいます。

    RequiredFieldValidator も一緒に登録することで、入力必須チェックも併せて行っていますが
    RegularExpressionValidator で電子メール形式適合チェックと入力必須チェックとを統合できないものでしょうか?

    ちなみに
    ValidateExpressionに \w など、どんなものを指定しても
    空文字列は検証OK(検証されない)になってしまうようです。

    何か情報をご存知の方
    ご教示をお願い致します。
    • 編集済み DEKOCHAN 2009年10月29日 6:06 コード
    2009年10月29日 6:04

回答

  • 空の値をチェックできるのはRequiredFieldValidator だけなので、RegularExpressionValidatorなど他の検証コントロールで空のチェックを行いたい場合は、既にされているようにRequiredFieldValidatorと組み合わせる必要があります。これは仕様です。

    [HOW TO] RequiredFieldValidator コントロールを他の検証コントロールと共に使用して空白のエントリを処理する方法
    http://support.microsoft.com/kb/313044/ja

    上記はASP.NET 1.1に関する記述ですが、ASP.NET 2.0以降も変更が無いのではないかと思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク DEKOCHAN 2009年10月29日 8:09
    2009年10月29日 8:04
    モデレータ

すべての返信

  • 空の値をチェックできるのはRequiredFieldValidator だけなので、RegularExpressionValidatorなど他の検証コントロールで空のチェックを行いたい場合は、既にされているようにRequiredFieldValidatorと組み合わせる必要があります。これは仕様です。

    [HOW TO] RequiredFieldValidator コントロールを他の検証コントロールと共に使用して空白のエントリを処理する方法
    http://support.microsoft.com/kb/313044/ja

    上記はASP.NET 1.1に関する記述ですが、ASP.NET 2.0以降も変更が無いのではないかと思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク DEKOCHAN 2009年10月29日 8:09
    2009年10月29日 8:04
    モデレータ
  • trapemiya 様

    ご教示、どうも有り難う御座います。

    仕様なのですね。
    2009年10月29日 8:10