2011-12-17 2 views
0

와 나는이 DD/MM은/년의 날짜의 유효성을 검사하는 것으로 확인 : 어떻게 최소/최대 날짜를 설정하는정규식 :식이 유효한 날짜와 일치하지만, 최소 및 최대 날짜

^(((((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

이유는 단지 두 가지를 분리하지? –

+0

어떤 언어를 사용하고 있습니까? 번호 비교는 RegEx에서 제외 된 것이 가장 좋습니다. 나는 자바 스크립트 (maskedinput.js)를 사용하고 – FakeRainBrigand

+0

@FakeRainBrigand [페이지를 보시려면 여기를 클릭] (http://digitalbush.com/projects/masked-input-plugin/) – Steve

답변

1

프로그래밍 언어 (예 : java, C#, 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

관련 문제