//************************************************
// 日付チェック (形式チェックと実在日チェック)
// パラメータ: str yyyy/mm/dd形式の文字列(String型)を想定
// 戻り値: true - 正常 false - エラー
//************************************************
function checkDate(str){

if (str != null) {

str = str.replace(/^[  ]+|[  ]+$/g,'');

// 形式チェック
if(str.match(/^[0-9]{4}\/[0-9]{1,2}\/[0-9]{1,2}$/)){

  var ary = str.match(/[\d]+/g);
  var year = parseInt(ary[0], 10);
  var month = parseInt(ary[1], 10);
  var day = parseInt(ary[2], 10);

  if (year == 0) {
    return false;
  }
  if (month < 1 || month > 12) {
    return false;
  }
  if (day < 1 || day > 31) {
    return false;
} if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)){ return false; } // うるう年判定 if (month == 2) { var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); if (day > 29 || (day == 29 && !leap)){ return false; } } return true; // 正常 } } return false; }