1

文字列が有効な日付かどうかを確認するにはどうすればよいですか? 有効な場合は true を返し、それ以外の場合は false を返します。文字列は「01-JUN-2012」のようになります

4

1 に答える 1

1

次の関数は、(dd MMM yyyy) 形式をチェックします。ダッシュ (-) は使用できません。それはあなたを助けたり、正規表現をよく見て少し修正するかもしれません..

function isDate(txtDate)
{
    var currVal = txtDate;
    if(currVal == '')
        return false;

    var rxDatePattern = /^((31(?!\(Feb(ruary)?|Apr(il)?|June?|(Sep(?=\b|t)t?|Nov)(ember)?)))|((30|29)(?!\ Feb(ruary)?))|(29(?=\ Feb(ruary)?\ (((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))))|(0?[1-9])|1\d|2[0-8])\ (Jan(uary)?|Feb(ruary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sep(?=\b|t)t?|Nov|Dec)(ember)?)\ ((1[6-9]|[2-9]\d)\d{2})$/; //Declare Regex
    var dtArray = currVal.match(rxDatePattern); // is format OK?

    if (dtArray == null) 
        return false;

    //Checks for dd MMM yyyy format.

    dtMonth = dtArray[2];

    dtDay= dtArray[1];

    dtYear = dtArray[dtArray.length-2];       



    if (dtDay < 1 || dtDay> 31) 
        return false;
    else if (dtMonth == 2) 
    {
        var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
        if (dtDay> 29 || (dtDay ==29 && !isleap)) 
                return false;
    }
    return true;
}

});​

jsFiddleでの作業デモ

于 2012-07-06T05:08:15.163 に答える