web-dev-qa-db-ja.com

日時形式を検証するための正規表現(MM / DD / YYYY)

日時形式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;
    }
22
Supreet

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

単純な検証の場合:

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

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

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);
}
52
noirbizarre

マークされた答えは完璧ですが、ddとmmが実際に1桁である1つのシナリオに対してです。この場合、次の正規表現が最適です。

    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);
    }
8
Sujeet Sinha

これに基づいて

dd-mm-yy

オリジナルをこれに変更しました:

^(?:(?:(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec))(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:(?:0?2|(?:Feb))(\/|-|\.)(?:29)\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

ここで正規表現をテストする

2
luisnicg

この場合、1900〜2099年の日付(DD-MM-YYYY)または(DD/MM/YYYY)を検証するには、月と日を検証します

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();
}
0
Nouman Ali

this リンクを調べることができます。これが私にとって大きな助けになることを願っています。

上記のリンクで指定されている正規表現を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);

0
kavinder
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;
0
MIIB