- PR -

正規表現で半角数値のチェック

1
投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2007-01-25 16:56
msoです。

VisualStudio2005 C#で開発を行っています。
今、正規表現で苦戦しているのでアドバイスをいただけないでしょうか?

コード:
string str = "123456";
bool bol = Regex.IsMatch(str, "[0-9]");



上記のような正規表現をつかって、半角数値のチェックを行っています。
ただ、自分がやりたいのは半角数値以外の文字が入っていないか?を
チェックしたいのです。

そこで、調べたところ
コード:
string str = "123456";
bool bol = Regex.IsMatch(str, "[^0-9]");


とやったのですが、
コード:
string str = "123456";


であれば、いいのですが
コード:
string str = "123456abcdef";


もTrueが帰ってきてしまいます。

変数の中身が数値のみであることをチェックする
正規表現はムリなのでしょうか?

同じようなことを経験した方がいたら
アドバイスをお願いします。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-01-25 17:07
コード:

string str = "123456";
bool IsAllNumber = Regex.IsMatch(str, "^[0-9]+$");


まずは正規表現を正しく理解するところから始めてみてはいかがでしょうか。
(奥が深いですけど)
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-01-25 17:12
先頭から終りまで半角数値であるかなら

"^[0-9]+$"

でマッチしないですかね?
falseなら半角数値以外があったことになるかと。

引用:

msoさんの書き込み (2007-01-25 16:56) より:
コード:
string str = "123456";
bool bol = Regex.IsMatch(str, "[^0-9]");


とやったのですが、
コード:
string str = "123456";


であれば、いいのですが
コード:
string str = "123456abcdef";


もTrueが帰ってきてしまいます。


Trueが返るのは当然なのでは?
(string str = "123456";もTrueということ?)


っと、ぽぴ王子さんにサキコサレタ。。。
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2007-01-25 17:22
msoです。

返事ありがとうございます。

コード:
string str = "123456";
bool bol = (Regex.IsMatch(str, "[0-9]") && !Regex.IsMatch(str, "[^0-9]"));



自分で考えながらやってみたら、上記のようにしたら出来ました。
ただ、提示していただけたもののほうが良いみたいなので、
自分で理解してから使ってみようと思います。

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

スキルアップ/キャリアアップ(JOB@IT)