jQueryvalidation引擎:更改日期格式

我的Datepicker代码

$(function(){ $( "#task_start_date").datepicker({ dateFormat: 'dd-M-yy', showOn: 'button', buttonImage :image_us, buttonImageOnly: true }); }); 

HTML输入:

  

用于正确日期输入validation的JS函数:

 "date": { // Check if date is valid by leap year "func": function (field) { var pattern = new RegExp(/^(\d{4})[\/\-\.](0?[1-9]|1[012])[\/\-\.](0?[1-9]|[12][0-9]|3[01])$/); var match = pattern.exec(field.val()); if (match == null) return false; var year = match[1]; var month = match[2]*1; var day = match[3]*1; var date = new Date(year, month - 1, day); // because months starts from 0. return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day); }, "alertText": "* Invalid date, must be in YYYY-MM-DD format" }, 

这里的regex期望YYYY-MM-DD (2014-11-26)格式,但我们使用的是dd-M-yy(01-MAR-12)格式。

正则表达式尝试:

 /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/ 

上面的regex不起作用。 如何更改regex以匹配预期的datepicker输出。 DB中插入的值为01-MAR-12而不是2014-11-26

谢谢。

^(0 [1-9] | [12] [0-9] |?3 [01])[ – ] [AZ] {3} [ – ] \ d {2} $

这应该可以解决问题。 你试过的正则表达式是dd / mm / yyyy或dd-mm-yyyy的格式。

试试这个(未经测试):

 (?:0[1-9]|1[0-9]|2[0-9]|3[01])-(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)-\d{2} 
  • (?:0[1-9]|1[0-9]|2[0-9]|3[01]) :匹配01至09,10至19,20至29,30至31.但是2月没有有超过29的东西所以你如何处理我们不是正则表达式
  • - :匹配hypen
  • (?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC) :匹配月份
  • - :匹配hypen
  • -\d{2} :按任意顺序匹配任意两位数字

你可以缩小正则表达式,但我现在没有时间。

使用这一个

 "date": { // Check if date is valid by leap year "func": function (field) { var pattern = new RegExp(/^(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[\/\-\.](\d{4})$/); var match = pattern.exec(field.val()); if (match == null) return false; var year = match[3]; var month = match[2]*1; var day = match[1]*1; var date = new Date(year, month - 1, day); // because months starts from 0. return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day); }, "alertText": "* Invalid date, must be in dd-mm-yyyy format" },