日期的jquery验证不被接受日期

时间:2014-06-30 07:38:07

标签: jquery

我遇到了日期验证问题。我使用以下reg表达式仅以dd-mmm-yyyy格式输入日期

dateValidatorRegex = /^(\d{1,2})(-)(?:(\(jan)|(feb)|(mar)|(apr)|(may)|(jun)|(jul)|(aug)|(sep)|(oct)|(nov)|(dec))(-)(\d{4})$/i;

但在这种情况下,当我在jan月份输入日期时,它没有通过验证。请提出建议。

2 个答案:

答案 0 :(得分:2)

这是一个长期正则表达式的替代方法,它不处理闰年

Live Demo

function isValidDate(str) {
  var d = new Date(Date.parse(str.replace(/-/g," "))), parts = str.split("-");
  var monthNum = ["jan","feb","mar","apr","may","jun","jul",
                  "aug","sep","oct","nov","dec"].indexOf(parts[1].toLowerCase());
  return parts[0]==d.getDate() && 
         monthNum == d.getMonth() && 
         parts[2]==d.getFullYear();
}

请注意,数组的.indexOf与旧的IE不兼容,因此您可以

  var monthNum = {"jan":0,"feb":1,"mar":2,"apr":3,"may":4,
                  "jun":5,"jul":6,"aug":7,"sep":8,"oct":9,
                  "nov":10,"dec":11].[parts[1].toLowerCase()];

代替

答案 1 :(得分:1)

反斜杠的正则表达式错误。它将是,

var dateValidatorRegex = /^(\d{1,2})(-)(?:((jan)|(feb)|(mar)|(apr)|(may)|(jun)|(jul)|(aug)|(sep)|(oct)|(nov)|(dec)))(-)(\d{4})$/i;

通过反斜杠jan月没有验证。