文字列が日付の形(yyyy/mm/dd)かどうかのチェックをする

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)$/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です