32

日時形式 MM/DD/YYYY を検証しようとしています。これが私が試しているコードです。助けてください。

 function ValidateDate(testdate) {
        var Status
        var reg = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
        if (!reg.test(testdate)) {
            Status = false;
        }
        return Status;
    }
4

7 に答える 7

80

http://jsregex.com/ (多数あります) などのツールまたは単体テストで正規表現を試してください。

単純な検証の場合:

function validateDate(testdate) {
    var date_regex = /^\d{2}\/\d{2}\/\d{4}$/ ;
    return date_regex.test(testdate);
}

あなたの場合、(MM/DD/YYYY) を検証するために、1900 年から 2099 年までの年で、次のように書きます。

function validateDate(testdate) {
    var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/ ;
    return date_regex.test(testdate);
}
于 2013-03-04T07:31:59.827 に答える
0
var pattern = new RegExp((0|1)[0-9]\/[0-3][0-9]\/(19|20)[0-9]{2});
if(!testdate.match(pattern))
   return false;
else return true;
于 2013-03-04T07:25:49.357 に答える
0

この場合、日付 (DD-MM-YYYY) または (DD/MM/YYYY) を 1900 から 2099 の間の年で検証するには、このように月と日の検証を使用します。

if (!Regex.Match(txtDob.Text, @"^(0[1-9]|1[0-9]|2[0-9]|3[0,1])([/+-])(0[1-9]|1[0-2])([/+-])(19|20)[0-9]{2}$").Success)                  
{
   MessageBox.Show("InValid Date of Birth");
   txtDob.Focus();
}
于 2017-01-01T03:26:05.357 に答える
0

このリンクを調べることができます。これが私にとって非常に役立つことを願っています。

Javaコードで上記のリンクにある正規表現を使用している場合は、次の正規表現を使用してください

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

あなたの例で気付いたように、js 関数を使用している場合、これは正規表現を使用します

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

これは、1900-01-01 から 2099-12-31 までの mm/dd/yyyy 形式の日付に一致し、4 つの区切り文字を選択できます。そして忘れないように

return regex.test(testdate);

于 2014-06-30T11:25:45.900 に答える