//************************************************ // 日付チェック (形式チェックと実在日チェック) // パラメータ: 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; }