- PR -

日付型の入力チェックについて

1
投稿者投稿内容
INC.
会議室デビュー日: 2004/11/25
投稿数: 4
投稿日時: 2004-11-25 15:50
こんにちは。
ASP.NETとVB.NETを使ってWebアプリを作成しています。

Validatorコントロールを使って、日付(YYYY/MM/DD)形式の検証をしています。

現状では、CompareValidatorコントロールで、DATE型のチェックをしています。
しかし、この場合だとYY/MM/DD形式も許可されているので、
RegularExpressionValidatorコントロールで、YYYY/MM/DD形式のチェックを
しています。

この方法だとあまりしっくりこないので、RegularExpressionValidatorコントロール
のみで検証したいと考えています。どなたかご存知の方いましたら、よろしくお願い致します。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-11-25 16:43
引用:

INC.さんの書き込み (2004-11-25 15:50) より:

この方法だとあまりしっくりこないので、RegularExpressionValidatorコントロール
のみで検証したいと考えています。どなたかご存知の方いましたら、よろしくお願い致します。


日付は「正規表現だけ」ではチェックできないと思いますが……。
単に書式だけなら、たとえば
コード:
(19|20)[0-9][0-9]/(0[1-9]|1[0-2])/(0[1-9]|[1-2][0-9]|3[0-1])


とか、ですが……。
月ごとの日数の違い(28〜31)、うるう年ルール(単純な「4年ごと」ではない)を「正規表現だけ」で、どうやって表現するやら。

(※:上例の正規表現では「2005/02/31」なんてのも通ってしまいます。)

[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-11-25 16:51 ]
追記:
ちょっと例を変えてみました。
コード:
(19|20)[0-9][0-9]/(((01|03|05|07|08|10|12)/(0[1-9]|[1-2][0-9]|3[0-1]))|((04|06|09|11)/(0[1-9]|[1-2][0-9]|30))|(02/(0[1-9]|[1-2][0-9])))


だと、なんとか月ごとの日数まではいけますが……。
もちろん、うるう年など対応できません。1900/02/29も2005/02/29も通っちゃいます。

[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-11-25 17:01 ]
INC.
会議室デビュー日: 2004/11/25
投稿数: 4
投稿日時: 2004-11-25 17:02
ぢゃん♪さんレスありがとうございます。

とても参考になりました。

月ごとの日数の違いは別の部分で処理していこうと思います。

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

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