DOBON.NET DOBON.NETプログラミング掲示板過去ログ

文字チェック 正規表現

環境/言語:[.NET1.1 VB.NET XPSP2]
分類:[.NET]

はじめまして、medakaと申します

Validationイベントで正規表現を使って入力チェックをしようと思ったのですが

Dim regex As Regex = New Regex("\d?\d")
If Not regex.IsMatch(TextBox2.Text) Then
e.Cancel = True
End If

で数値2桁までのチェックはできたのですがテキストボックスに何も入力
していない状態でもOKとしたいのです

正規表現チェックの前に
if textbox2.text.length=0 then exit sub
とする事で実現はできたのですが、これを正規表現に組み込むことは
無理なのでしょうか?
"\d?\d|\n" とかいろいろやってみたのですがうまくいきません
■No6932に返信(medakaさんの記事)
> はじめまして、medakaと申します
>
> Validationイベントで正規表現を使って入力チェックをしようと思ったのですが
>
> Dim regex As Regex = New Regex("\d?\d")
> If Not regex.IsMatch(TextBox2.Text) Then
> e.Cancel = True
> End If
>
> で数値2桁までのチェックはできたのですがテキストボックスに何も入力
> していない状態でもOKとしたいのです
>
> 正規表現チェックの前に
> if textbox2.text.length=0 then exit sub
> とする事で実現はできたのですが、これを正規表現に組み込むことは
> 無理なのでしょうか?
> "\d?\d|\n" とかいろいろやってみたのですがうまくいきません
>

一桁の場合、01-09の表記もOKでしたら、
\d{0,2}
でいけるかと思います。
> 一桁の場合、01-09の表記もOKでしたら、
> \d{0,2}
> でいけるかと思います。

ありがとうございます
上記ので試しましたらnull時もいけました
ただ、999とか1234とか素通りしてしまって2桁制限が効いてない?みたいなのと、
全角の99とかも許可されてしまうようです。

いろいろやってみた所、null時は ^()$ で許可できるみたいでしたので
"[0-9]?[0-9]|^()$" で2桁までの半角数字及び未入力時許可できました

ありがとうございました
解決済み!
> 一桁の場合、01-09の表記もOKでしたら、
> \d{0,2}
> でいけるかと思います。

厳密にやるのであれば、^\d{0,2}$ と行頭・行末記号をつけるといいでしょうね。
でないと、a00b も認識されてしまいますから。
■No6937に返信(medakaさんの記事)
> ただ、999とか1234とか素通りしてしまって2桁制限が効いてない?みたいなのと、
> 全角の99とかも許可されてしまうようです。

カキコ中にレスが付きましたが、2桁制限をするために^と$を付けるのです。
書き忘れていた私が悪かったです。

それと、全角数字の件ですが、\dを使っている限り回避できません。
”\d”を”(0-9)”に置き換えることで、半角数字限定でいけるはずです。
> カキコ中にレスが付きましたが、2桁制限をするために^と$を付けるのです。
> 書き忘れていた私が悪かったです。

何度もありがとうございます
なんか目から鱗が落ちたような感じ
解決済み!
  • 題名: Re[1]: 文字チェック 正規表現
  • 著者: EE
  • 日時: 2004/10/24 20:36:08
  • ID: 6970
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
一番最初の回答方法を試したら2桁の制限が利かなくなったようなことを書いてますが、もとから^$を付けていない時点でダメだったと思うのですが。
対象の文字列の中に1〜2桁の数字列があるかを調べる正規表現ですので、
「あいうえお01」、「あい12うえお」、「34あいうえお」
の全てが通ってしまうはずです。

DOBON.NET | プログラミング道 | プログラミング掲示板