-3

任何人都可以帮助我进行正则表达式验证。

我提出了可以输入日期的要求

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

4 回答 4

0
/(0?[1-9]|1[0-2])\/(0?[1-9]|[12]\d|3[01])\/([12]\d{3}|\d\d)/
于 2012-10-19T08:29:28.113 回答
0

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

于 2012-10-19T09:06:54.280 回答
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 对象的扩展,它可以解析日期并在字符串不代表正确日期时抛出异常。它还将处理比这更多类型的日期格式。

于 2012-10-19T08:54:50.010 回答
0

尝试这个:

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

这使正则表达式简单且易于修改。然后,您可以分别验证为日、月和年输入的值(例如,年是否在 1900 和 2099 之间等)。

于 2012-10-19T08:30:30.453 回答