From: FUKUI Osamu Date: 2003-10-21T17:45:22+09:00 Subject: [ruby-list:38625] 日付の正規表現チェック 福井@fsYsです。 日付の正規表現チェックで詰まっております。 入力される日付は 2003-10-21 の形式(ISO-8601 によるフォーマット) http://www.postgresql.jp/document/pg732doc/user/datatype-datetime.html を期待して /[12]\d{3}-[01]\d-[0-3]\d/ でチェックするようにしたのですが 2003-9-1 の月日1桁で前のゼロがない形式も受付たく /[12]\d{3}-[01]?\d-[0-3]?\d/ で良いかと思いきや 2003-0-0 がエラーとなりません。 /[12]\d{3}-[01]?[1-9]-[0-3]?[1-9]/ としてみたら 2003-10-10 がエラーとなってしまいます(まあ当然ですが^^;; /[12]\d{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[1-3]\d)/ /[12]\d{3}-(0?[1-9])|(1[0-2])-(0?[1-9])|([1-3]\d)/ とやってみたのですが、これも 2003-10-40 がエラーになりません。 2003-9-1 と 2003-10-10 (当然 2003-09-01も)のチェックが うまく正規表現で可能なら 教えて頂きたくどうぞよろしくお願いします。 # うるう年のチェックは、正規表現以外でやりますので、 # 正規表現では、比較的わかりやすくできるところまで # とは考えているのですが.. 環境は、以下です。 $ ruby -v ruby 1.8.0 (2003-08-04) [i686-linux] ΘιΘ彡・‥…━ Fukui System Research http://fsys.net/ ━…‥・ ー 福井 修 FUKUI Osamu o-fukui@po.iijnet.or.jp