@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

バリデーションチェックについて

投稿者投稿内容
未記入
会議室デビュー日: 2006/11/10
投稿数: 4
投稿日時: 2006-11-11 00:29
開発環境<WindowsXP professonal SQLServer2005 Microsoft Visual Studio 2005 C#>

初めて投稿させていただきます。いつも拝見しております。
開発を始めたばかりの素人なので宜しくお願いいたします。

電話番号の数字の数を11桁までに設定したいと思っております。
(12桁以上入力でエラー表示)

色々と調べてみたのですがどうしてもわからないので、皆様の力をお貸しください。

電話番号はtextBox1、textBox2、textBox3と3つ用意し、1111-11-1111と入力できるようになっております。
これが1つのtextBoxに入力するならばReqularExpressionValidatorを使えば設定できるのというのはわかったのですが、3つのtextBoxだとそれが使えなのでどうすればよいのかわからないので、ご教授願います。宜しくお願いいたします。

ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2006-11-11 00:43
>3つのtextBoxだとそれが使えなのでどうすればよいのかわからないので
単純に 3つのRegularExpressionValidatorでは?

一つのRegularExpressionValidatorで処理したいのかな?,だとしたら学習してきて!
_________________
ognac@わんくま同盟
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-11-12 07:22
それぞれ tb1, tb2, tb3 とします。

tb1 とtb2 と tb3 に、リクワイアを設定します(つまり、スペル忘れたってことだ)。
b1 と tb2 に、RegularExpressionValidator を設定します。
tb3 に CustomValidator を設定し、この中で正規表現チェックをします。


んで、電話番号って、市外局番も入力するなら・・・
^0¥d{1-4}-[1-9]¥d*-¥d{4}$
んな感じ?
_________________
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2006-11-13 13:18
便乗します。
Jittaさん曰く、
>tb1 と tb2 に、RegularExpressionValidator を設定します。
>tb3 に CustomValidator を設定し、この中で正規表現チェックをします。
 結局、3つの検証コントロールコントロールを使うことになり,リクワイアの設定分だけ冗長になりません?
 って,リクワイアの意味が理解できてないかも、
この前提はローカル処理で PostBack経由のサーバ処理ではないですよね?
1セッション内で, 検証機能の使い回しのイメージが描けません。 エレガントな手法ですか?

_________________
ognac@わんくま同盟
未記入
会議室デビュー日: 2006/11/10
投稿数: 4
投稿日時: 2006-11-13 21:50
ognacさん、Jittaさんご返信ありがとうございます。
ご返事が遅くなりまして申し訳ありません。

引用:

Jittaさんの書き込み (2006-11-12 07:22) より:
それぞれ tb1, tb2, tb3 とします。

tb1 とtb2 と tb3 に、リクワイアを設定します(つまり、スペル忘れたってことだ)。
b1 と tb2 に、RegularExpressionValidator を設定します。
tb3 に CustomValidator を設定し、この中で正規表現チェックをします。


んで、電話番号って、市外局番も入力するなら・・・
^0¥d{1-4}-[1-9]¥d*-¥d{4}$
んな感じ?




なるほど。このようなやり方があったのですか!!Jittaさんありがとうございます。

Jittaさんのようにやってみたのですがまだうまくいきません。
私のやり方が悪いのだと思われるのですが、どこがわるのでしょうか?

行った設定として、

それぞれtb1 と tb2 に、RegularExpressionValidatorを設定。
controlToValidateにそれぞれb1、b2設定し、
validationExpressionに『^0¥d{1-4}-[1-9]¥d*-¥d{4}$』を設定しました。

tb3のCustomValidatorを設定。
controlToValidateにtb3を設定いたしました。

さすがにこれだでではダメな気もしますがこれからどのようにしてよいのか分かりません。

素人のような質問になってしまいましたがどうか宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-11-14 23:22
引用:

未記入さんの書き込み (2006-11-13 21:50) より:

行った設定として、

それぞれtb1 と tb2 に、RegularExpressionValidatorを設定。
controlToValidateにそれぞれb1、b2設定し、
validationExpressionに『^0¥d{1-4}-[1-9]¥d*-¥d{4}$』を設定しました。

tb3のCustomValidatorを設定。
controlToValidateにtb3を設定いたしました。


ごめんなさい。私の書き方が悪かったです。

RegularExpressionValidatorは、「必須入力」のチェックが出来ませんから、RequiredFieldValidator がいります(これで ognacさんへの回答になるかな?)。

で、tb1 と tb2 に対する RegularExpressionValidator は、"¥d+"だけでも良いでしょう。どのトリガでチェックされるのか忘れてしまったのでした。
クライアント上で、tb1 から tb2 にフォーカスが移っても、クライアント上の検証コントロールは動くんじゃなかったかな?ポストの時だけだったかな?ポストの時だけなら、tb1 と tb2 への RegularExpressionValidator はいらない。

まとめの CustomValidator は、単純に tb3 を検証するのではなく、tb1 + tb2 + tb3 を検証します。なので、CustomValidator を使います。

また、先に示した正規表現は、あまり良くないですね。市外局番が2桁なら市内局番は4桁だし、市外が3桁なら市内は3桁、市外が4桁なら市外は2桁、市外が5桁なら市内は1桁ですから、その条件を OR で連結?
_________________
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2006-11-15 00:43
ognacです。
Jittaさん>RegularExpressionValidatorは、「必須入力」のチェックが出来ませんから、RequiredFieldValidator がいります(これで ognacさんへの回答になるかな?)。
了解です。
Host処理で判定するなら, 一つのCheckerで可能なので、そのほうが簡潔かもしれませんね。
ちなみに私は "^\d{2,5}-\d{1,4}-\d{4}$" で処理してます。

_________________
ognac@わんくま同盟
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-11-15 03:00
余談ですが、市外局番6桁っていうのもありますよ。
その場合、市内局番はありません。

・・・と突っ込もうかなと思ったのですが、
今年の3月で6桁の市外局番が消滅したのですね。
これで、バリデーションが多少楽になるのではないでしょうか。

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