0

dd / mm/yyyyのみを受け入れる日付を検証しようとしています。

次のコードを使用して検証しましたが、常にアラートが表示されます。

私のコードの何が問題になっていますか?

私が使用したとき、 var bevalue = '10/10/1989'; それはうまくいきます。

そして、私が使用したコードでは、 value = $(this).val(); 価値を得るために。

次にそれを文字列に変換します

編集:

$('input, textarea').live('blur', function () {
        var field = $(this).attr('name');
        var value = $(this).val();

if(field=='birthday')
  {   
        var bevalue = String(value);   
        var regbday =/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d+$/;
        if(regbday.test(bevalue) == false)
        {
            alert('please Enter Birth date in dd/mm/yyyy');
           return false;
        }
}

正規表現での私の間違いに返信してくれたみんなに感謝します。答えを受け入れました。

4

2 に答える 2

1

正しくないのは正規表現ですが、

function checkBday(bevalue) {
    var regbday = /(0[1-9]|[12][0-9]|3[01])[\.\/\-](0[1-9]|1[012])[\.\/\-](19|20)\d\d/;
    if (regbday.test(bevalue) == false) {
        alert(bevalue + ' is not valid\nplease Enter Birth date in dd/mm/yyyy');
        return false;
    }
    return true
}
console.log(checkBday("14.03.2013")) //true
console.log(checkBday("14-03-2013")) //true
console.log(checkBday("14/03/2013")) //true
console.log(checkBday("14.03.12")) //false
console.log(checkBday("12.28.2013")) //false
console.log(checkBday(prompt("Enter Birthday in dd/mm/yyyy")));

これは機能するはずです。JSBInの例を次に示します。

編集区切り文字として
使用する日付のみを照合する場合は、正規表現を次のように変更します/
/(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d/

于 2013-03-14T11:29:47.443 に答える
0

正規表現が間違っていて、日と月の部分が入れ替わっていて、一部の文字がエスケープされていません。

次の式を使用します。

var regbday = /^(0[1-9]|[12][0-9]|3[01])[\- \/\.](0[1-9]|1[012])[\- \/\.](19|20)\d\d+$/;
于 2013-03-14T11:34:14.510 に答える