【问题标题】:Regex for Date formats日期格式的正则表达式
【发布时间】:2012-10-09 19:54:29
【问题描述】:

谁能帮助我进行正则表达式验证。

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

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.");

【问题讨论】:

  • 你试过什么?另外,看看这个:regular-expressions.info/dates.html
  • 验证的范围应该有多大?它是否必须检查它是一个有效的日期,即每月有正确的天数限制,并考虑闰年?
  • 除非您想要一个处理所有闰年规则等的 hideously 大型正则表达式,否则最好通过尝试转换为真实日期来进行验证。
  • @Damien_The_Unbeliever:这不是可怕的长。只是淫秽和令人发指的。
  • @Guffa 是的,它必须检查有效日期。这是我的代码,它在通过正则表达式验证后检查有效日期。 $.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());} 返回结果; },"请输入有效日期。");

标签: .net regex jquery-validate


【解决方案1】:

我最近需要一个仅正确匹配有效美式 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 对象的扩展,它可以解析日期并在字符串不代表正确日期时抛出异常。它还将处理比这更多类型的日期格式。

【讨论】:

    【解决方案2】:

    你可以使用ajax的MaskValidator来验证日期,非常好用

    【讨论】:

      【解决方案3】:

      试试这个:

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

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

      【讨论】:

        【解决方案4】:
        /(0?[1-9]|1[0-2])\/(0?[1-9]|[12]\d|3[01])\/([12]\d{3}|\d\d)/
        

        【讨论】:

          猜你喜欢
          • 2012-06-20
          • 1970-01-01
          • 1970-01-01
          • 2022-06-15
          • 2014-03-22
          • 1970-01-01
          相关资源
          最近更新 更多