我想使用正则表达式检查格式为dd-mm-yyyy
的日期,并且还必须检查闰年日期。
我正在使用RegularExpressionValidator
来检查日期。
答案 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))$