验证日期模式

时间:2012-12-12 08:36:57

标签: javascript

我需要一个javascript方法来验证日期模式,如今2012年1月14日

到目前为止,我不确定哪种正则表达式用于此模式,因为它不是标准日期,如14/01/2012或01/14/2012或01-04-2012 ..我试图做这样的事情因为早期开始分裂它们但结束时我收到了完全分裂。

这是我的拆分代码

 function validateDate(date){
   var test = date.replace(",","");
   alert(test);
  var split = test.split("");
  for(i=0;i<split.length;i++){
      alert(split[i]);
   }
  alert("total length "+split.length);
}

5 个答案:

答案 0 :(得分:3)

您可以使用momentjs并特别注明其parsing functionnality。类似的东西:

moment("Jan 14, 2012", "MMM DD YYYY").isValid();

答案 1 :(得分:0)

使用正则表达式:

^[a-zA-Z]{3}\s[0-9]{1,2},\s[0-9]{4}$

这适用于任意日期为三个字符的逗号,日期为逗号,按年顺序为4位数

答案 2 :(得分:0)

您可以使用以下内容:

(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec), [0-3]?\d (\d\d)?\d\d

请免费填写此表达式以进行调整

答案 3 :(得分:0)

您可以将该格式转换为您想要的格式。您需要做的就是提取部分:

function formatDate( dateStr ) {
  var date = new Date( dateStr ),
      m = date.getMonth() + 1,
      d = date.getDate(),
      y = date.getFullYear();
  return m +'/'+ d +'/'+ y; // you can use any format here
}

console.log( formatDate( 'Jan 14, 2012' ) ); //=> '1/14/2012'

然后你可以使用这个函数的新字符串:Best way to validate date string format via jQuery。这将有效地验证日期,因此“2011年2月29日”将不会验证,例如mplungjan指出。

用法:

if ( isValidDate( formatDate( 'Jan 14, 2012' ) ) ) {
  // valid
} else {
  // not valid
}

答案 4 :(得分:0)

它是传递给日期对象的有效字符串

DEMO

var monthNames = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(",");
function isvalid(str) {
  var d = new Date(str);
  var dateParts = str.split(" ");
  return monthNames[d.getMonth()]===dateParts[0] &&
         d.getDate()===parseInt(dateParts[1],10) &&
         d.getFullYear()===parseInt(dateParts[2],10);
}      
alert(isvalid("Jan 14, 2012"));
alert(isvalid("Feb 29, 2011"));