2

2012 年 1 月 14 日のような日付パターンを検証するための JavaScript メソッドが必要です

これまでのところ、2012 年 14 月 1 日、2012 年 1 月 14 日、2012 年 1 月 14 日、2012 年 1 月 14 日などの標準的な日付ではないため、このパターンにどの正規表現を使用すればよいかわかりません。それらを分割するために、私は完全な分割を受け取りました。

これが私の分割コードです

 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

日付オブジェクトに渡す有効な文字列です

デモ

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 に答える
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

次の正規表現を使用します。

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

これは、3 文字の月、日ごとのコンマ、4 桁の年をこの順序で含む任意の日付に対して機能します。

于 2012-12-12T08:44:35.467 に答える
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 に答える