none
全角スペース、半角スペースのみが入力された場合のハンドリング RRS feed

  • 質問

  • 環境:ASP.NET(VB) 4

    テキストボックスに半角数値だけが入力されていることを検証するような正規表現のプログラムをテストしていた

    ところ全角スペース、もしくは半角スペースのみが入力された場合に意図した動きにならず困っています。

    If System.Text.RegularExpressions.Regex.IsMatch(TextBox1.Text, "^[0-9]+$") Then
      Label1.Text = "半角英数のみです"
    Else
      Label1.Text = "半角英数以外が含まれています"
    End If


    上記の場合、全角スペース、もしくは半角スペースのみが入力された場合だと”半角英数のみです”と判定されてしまいます。

    強引にReplace()を使って、スペースを置換してやれと思ったのですが、どうも全角スペース、もしくは半角スペースのみの場合は置換されません。

    TextBox1.Text = Replace(TextBox1.Text, " ", "")
    TextBox1.Text = Replace(TextBox1.Text, " ", "")

    どのようにしたら全角・半角スペースのみの入力値をハンドリングできるのでしょうか?

    よろしくお願いします。


    2012年7月19日 8:58

回答

  • > ところ全角スペース、もしくは半角スペースのみが入力された場合に
    > 意図した動きにならず困っています。

    アップされたコードを見る限りでは、そんなことはあり得ないと思いま
    す。アップされているコードにはない何かがあるのではないですか?

    2012年7月19日 14:03

すべての返信

  • > ところ全角スペース、もしくは半角スペースのみが入力された場合に
    > 意図した動きにならず困っています。

    アップされたコードを見る限りでは、そんなことはあり得ないと思いま
    す。アップされているコードにはない何かがあるのではないですか?

    2012年7月19日 14:03
  • SurferOnWwwさんご回答ありがとうございます。

    おっしゃる通り、アップしたコード以外の部分に問題がありました。

    TextBox1の入力値をCustomValidatorを使って検証していました。その際のValidateEmptyText="False"が問題でした。

    <asp:CustomValidator id="vld_Box1" runat="Server" 
    ControlToValidate="txtBox1" OnServerValidate="txtBox1_Validate" Display="None" ValidateEmptyText="False"  />

    ValidateEmptyText="Ture"だと未入力でも検証を行うか否かのプロパティーだと思い込んでいましたので、ValidateEmptyText="False"にしていました、ただValidateEmptyText="False"だと半角・全角スペースだけの場合でも検証が行われないのですね。

    ありがとうございました。

    2012年7月20日 1:06
  • > CustomValidatorを使って検証していました。

    それを最初に書いておいてほしかったです。


    RequiredFieldValidator と RegularExpressionValidator を使え
    ば、検証用のメソッドを、サーバー側とクライアント側の両方で、
    ASP.NET が自動的に生成してくれますので、CustomValidator を
    使うより簡単かつ確実だと思います。

    CustomValidator でなければならない理由があったのでしょうか?

    2012年7月20日 13:41