JavaScriptで入力値が日付(yyyy/mm/dd)の形をしているかどうか、さらに存在する日付かどうかのチェックを行うサンプルです。
Program
function check_date(s)
{
if (typeof s == "string") {
var a = s.match(/^(\d+)\/(\d+)\/(\d+)$/);
if (a) {
var y = parseInt(a[1]);
var m = parseInt(a[2]) - 1;
var d = parseInt(a[3]);
var x = new Date(y, m, d);
return (y == x.getFullYear() && m == x.getMonth() && d == x.getDate());
}
}
return false;
}
check_date('123'); // → false
check_date('123/4/5'); // → true
check_date('2018/02/02'); // → true
check_date('2018/02/32'); // → false
check_date('2018/02/29'); // → false
check_date('2020/02/29'); // → true
check_date('2019/9/9'); // → true
check_date('16000/12/31'); // → true
Demo
結果:
Memo
区切り文字を / から – に変更する場合は、正規表現を変更してください。
/^(\d+)-(\d+)-(\d+)$/
以下のようにすると、年月日の表現を「4桁-2桁-2桁」に制限できます。
/^(\d\d\d\d)-(\d\d)-(\d\d)$/