日期格式的正则表达式:dd-mm-yyyy

时间:2013-02-01 06:25:14

标签: asp.net

我想使用正则表达式检查格式为dd-mm-yyyy的日期,并且还必须检查闰年日期。

我正在使用RegularExpressionValidator来检查日期。

7 个答案:

答案 0 :(得分:2)

试试这个。它对我有用!

ValidationExpression="(^((((0[1-9])|([1-2][0-9])|(3[0-1]))|([1-9]))-(((0[1-9])|(1[0-2]))|([1-9]))-(([0-9]{2})|(((19)|([2]([0]{1})))([0-9]{2}))))$)"

答案 1 :(得分:1)

试试这个正则表达式 -

^(((((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]))|(29-02-20(([02468][048])|([13579][26]))))$

来自Here

答案 2 :(得分:1)

这个正则表达式也处理闰年:

  

^(((0 [1-9] | [12] \ d | 3 [01])/(0 [13578] | 1 [02])/((19 | [2-9] \ d) \ d {2}))|((0 [1-9] | [12] \ d | 30)/(0 [13456789] | 1 [012])/((19 | [2-9] \ d) \ d {2}))|((0 [1-9] | 1 \ d | 2 [0-8])/ 02 /((19 | [2-9] \ d)\ d {2})) |(29/02 /((1 [6-9] | [2-9] \ d)(0 [48] | [2468] [048] | [13579] [26])|((16 | [2468 ] [048] | [3579] [26])00))))$

匹配
[2001年2月29日],[2003年4月30日],[01/01/2003]

非匹配
[2001年2月29日],[30-04-2003],[1/1/1899]

您还可以查看此链接:http://www.codeproject.com/KB/aspnet/LengthValidation.aspx

答案 3 :(得分:0)

您可以 javascript 查看闰年for more info

isLeap = new Date(year, 1, 29).getMonth() == 1

正则表达式

^(?:^(?:(?:(?:(?:(?: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的所有实例?用0。

答案 4 :(得分:0)

您可以使用CustomValidator并使客户端验证变得简单,并且在服务器端使用DateTime.TryParse来获得明确的验证。虽然我怀疑你不需要你的代码一直工作到9999年(不,我无法立即看到提供的正则表达式是否能够在未来发挥作用)。

答案 5 :(得分:0)

来自Microsoft DN,但已修改为使用20xx和19xx年用作DOB

^(((((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]))|(29-02-20(([02468][048])|([13579][26]))))|(((19[0-9][0-9]))|(29-02-19(([02468][048])|([13579][26]))))))$

答案 6 :(得分:-1)

dd / MM / yyyy formate

(((0|1)[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d\d))$