좋아요, 당신은 정규식을 요구했습니다. 여기있어. 경우,
^ # start of string
(?: # either match...
(?:
(?: # 31st day of all allowed months
(?:(?:0?[13578]|1[02])/31)
| # or
(?:(?:0?[13-9]|1[0-2])/(?:29|30))
) # 29th/30th day of any month except February
/ # plus any year since 1600
(?:1[6-9]|[2-9]\d)
\d{2}
)
| # or
(?: # match Feb 29th
0?2/29/
(?: # in all leap years since 1600
(?:
(?: # century
1[6-9]|[2-9]\d
)
(?: # two-digit years divisible by four, not ending in 00
0[48]
|
[2468][048]
|
[13579][26]
)
|
(?: # all the leap years ending in 00
(?:16|[2468][048]|[3579][26])
00
)
)
)
)
| # or
(?: # (for any month)
(?:0?[1-9])
|
(?:1[0-2])
)
/
(?: # match the 1st-28th day
0?[1-9]|1\d|2[0-8]
)
/
(?:
(?:1[6-9]|[2-9]\d)\d{2}
)
)$
또는 적어도 가능한이 짐승을 이해하려면 버전 댓글을 달았습니다,
첫째, 자세한 : 나는 정규 표현식과 날짜를 확인하는 것은 좋은 생각이 아닌 이유 즉시 분명 생각
^(?:^(?:(?:(?:(?:(?:0?[13578]|1[02])/31)|(?:(?:0?[13-9]|1[0-2])/(?:29|30)))/(?:1[6-9]|[2-9]\d)\d{2})|(?:0?2/29/(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))/(?:0?[1-9]|1\d|2[0-8])/(?:(?:1[6-9]|[2-9]\d)\d{2}))$)$
이 허용하지만, 한 자리 개월/일 앞에 0을 필요로하지 않는 : 당신은 ASP.NET이 유효성 검사기에서 자세한 정규 표현식에 사용할 수 없습니다. 이를 원하지 않으면 0?
의 모든 인스턴스를 0
으로 바꿉니다.
mmddyy 또는 mm/dd/yy 또는 mm/dd/yyyy입니까? 다른 요구 사항은 무엇입니까? 1792 년 1 월 1 일 유효합니까? 9/9/99 또는 9/09/9999는 어때요? 그것이 mmddyy라면, 1900 년대와 2000 년대 사이의 컷오프는 어디입니까? –
@Tim : 해당 mm/dd/yyyy. 타당성을 위해 아직 구체적인 요구 사항이 없다고 생각합니다. 컷오프 없음. – Malik