日期格式的正则表达式

时间:2012-10-19 08:25:04

标签: .net regex jquery-validate

任何人都可以通过正则表达式验证来帮助我。

我已经提出了我的日期输入可以

的要求
mm/dd/yyyy
mm/dd/yy
m/d/yyyy
m/d/yy

我的正则表达式应该支持所有四种可能性。

请帮助我。

提前致谢。

是的,必须检查有效日期。

这是我的代码,它在通过正则表达式验证后检查有效日期。

$.validator.addMethod("ValidDate", function(value,element) {
            var result = true;
            if($('#'+element.id).val() != "")
            {  
               var reg = new RegExp("regexcode");
               if (!reg.test($('#'+element.id).val())) 
               {
                result = false;
               }
            }   
            if(result == true)
            {
             $("#"+element.id).datepicker("option", 'mm/dd/yy', $("#"+element.id).val());}
            return result;
            },"Please enter valid date.");

4 个答案:

答案 0 :(得分:0)

/(0?[1-9]|1[0-2])\/(0?[1-9]|[12]\d|3[01])\/([12]\d{3}|\d\d)/

答案 1 :(得分:0)

试试这个:

/[0-9]{1,2}[/][0-9]{1,2}[/][0-9]{1,4}/

这使正则表达式简单易用。然后,您可以单独验证为日,月和年输入的值(例如,年份是否在1900年到2099年之间等)。

答案 2 :(得分:0)

我最近需要一个正确匹配有效的美式m / d / y日期的正则表达式。我构建了一个类似于下面的正则表达式,它正确地匹配了从1900年到2099年的所有日期,包括所有闰年。我没有必要提取匹配项,因此这个正则表达式不能用于从日期中提取数字。

请注意,这个正则表达非常令人发指,它的使用可能会损害您的声誉。还要注意漏洞。我从记忆中重建了以下内容。

/^((((0?[13578]|1[02])\/([012]?[1-9]|[12]0|3[01])|(0?[469]|11)\/([012]?[1-9]|[123]0)|0?2\/(0?[1-9]|1[0-9]|2[0-8]))\/(19|20)?[0-9]{2})|((0?2\/29\/((19|20)?(0[48]|[2468][048]|[13579][26])|1900))))$/

我邀请其他人改进,因为我知道它有缺点。

但是,我会指出,如果你正在考虑使用这个正则表达式,你应该认真考虑尝试解析日期。大多数浏览器都提供Date对象的扩展,它可以解析日期,并在字符串不表示正确日期时抛出异常。它还将处理更多类型的日期格式。

答案 3 :(得分:0)

您可以使用ajax的MaskValidator来验证日期,它非常易于使用