2

我需要一个 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);
}
4

5 回答 5

3

您可以使用momentjs和特别是它的解析功能。就像是 :

moment("Jan 14, 2012", "MMM DD YYYY").isValid();
于 2012-12-12T08:48:27.377 回答
0

使用正则表达式:

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

这将适用于任何日期,月份为三个字符,日后有逗号,年份为 4 位数,按此顺序

于 2012-12-12T08:44:35.467 回答
0

你可以使用这样的东西:

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

请随意填写以使用此表达式进行调整

于 2012-12-12T08:49:03.363 回答
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。这将有效地验证日期,因此例如 mplungjan 指出的“2011 年 2 月 29 日”将无法验证。

用法:

if ( isValidDate( formatDate( 'Jan 14, 2012' ) ) ) {
  // valid
} else {
  // not valid
}
于 2012-12-12T08:50:32.853 回答
0

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

演示

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

​</p>

于 2012-12-12T08:59:15.517 回答