2011-12-17 14 views
0

と私は、これはDD/MM/YYYYに日付を検証することが分かっ:正規表現:式が有効な日付に一致するが、最小値と最大値の日付

^(((((0[1-9])|(1\d)|(2[0-8]))\/((0[1-9])|(1[0-2])))|((31\/((0[13578])|(1[02])))|((29|30)\/((0[1,3-9])|(1[0-2])))))\/((20[0-9][0-9])|(19[0-9][0-9])))|((29\/02\/(19|20)(([02468][048])|([13579][26]))))$ 

私は最小/最大日数を設定するにはどうすればよいですか?

+0

なぜ2つに分割しないのですか? –

+0

あなたはどの言語を使用していますか?番号の比較は、RegExの中で一番良い方法です。 – FakeRainBrigand

+0

@FakeRainBrigand私はjavascript(maskedinput.js)を使用しています[ページを表示するにはここをクリック] – Steve

答えて

1

プログラミング言語(例えばjavaC#pythonなどとして)date/time/datetimeタイプを持っています。
dateは、有効な引数を指定すると、コンストラクタを使用して作成できます。
そうでない場合は、キャプチャできるexceptionの商品となります(通常try...catchステートメント)。
regexを使用して29/2/201229/2/2013を検証することは困難です。
しかし、それはdate言語の助けを借りて簡単です。

$ python 
>>> import time 
>>> time.strptime('29/2/2012', '%d/%m/%Y') 
time.struct_time(tm_year=2012, tm_mon=2, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=60, tm_isdst=-1) 
>>> time.strptime('29/2/2013', '%d/%m/%Y') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python3.2/_strptime.py", line 482, in _strptime_time 
    tt = _strptime(data_string, format)[0] 
    File "/usr/lib/python3.2/_strptime.py", line 459, in _strptime 
    datetime_date(year, 1, 1).toordinal() + 1 
ValueError: day is out of range for month 
0

このプラグインを使用する場合は、少なくとも、書式設定の観点から有効な日付があることがわかります。次に、JavaScriptを使用して日付を解析し、すべてのルールを決定します。

functionであり、誰でも追加する場合はとなります。更新ボタンを押してリンクをここにドロップします。もっと完成すれば私はこの投稿を更新します。

RegExの日付を実際に検証するとは想像もできませんでした。

0

日付を比較するには、date.jsも使用できます。

HTH

関連する問題