2012-10-19 168 views
-2

任何人都可以帮助我与正则表达式验证。日期格式的正则表达式

我想出了要求在我的日期输入可以是

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

你有什么试过?另外,看看这个:http://www.regular-expressions.info/dates.html –

+0

验证应该有多广泛?是否需要检查它是否是有效的日期,即每月正确的天数限制和闰年考虑? – Guffa

+0

除非你想要一个处理所有闰年规则等的*可恶的*大正则表达式,否则最好通过尝试转换为真正的日期来进行验证。 –

回答

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

试试这个:

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

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

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

0

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