1

現在、フォームの検証に取り組んでいます。日付に関しては、障害に遭遇しました。おそらく、狂った RegEx 関係者の何人かは、このテーマに光を当てることができるでしょう。関節炎になるまでグーグルで検索しました。

現在、次の正規表現を使用しています。

var dateReg = /^(0[1-9]|1[012])[- //.](0[1-9]|[12][0-9]|3[01])[- //.](19|20)\d\d$/;

これは mm/dd/yyyy 形式で検証されますが、31 日未満のものに対してのみ検証されます。月単位で日の検証を行うことは可能ですか? これで別のルートに行くことをお勧めしますか?

4

1 に答える 1

1

@Woobleが説明したように、正規表現はあなたのニーズに合うことができません。これはどうですか:

if(typeof String.prototype.isValidDate === "undefined") {
    String.prototype.isValidDate = function() {
        var data = this.split(/[ -./]/);
        var day = parseInt(data[1]);
        var month = parseInt(data[0]) - 1;
        var year = parseInt(data[2]);
        var date = new Date(year, month, day);
        return date.getDate() === day
            && date.getMonth() === month
            && date.getFullYear() === year;
    }
}

document.write("11 02 2011".isValidDate());​
document.write("<br />");
document.write("11 32 2011".isValidDate());

プリント:

true
false

デモはこちらから入手できます。

于 2012-10-25T14:33:56.560 に答える