0

日付の検証に問題があります。私のコードでは、2012年の日付を受け入れる正規表現を使用しました。2013年の日付を指定すると、「無効な日付」と表示されます。この点で親切に私を助けてください。それはどんな年でも受け入れるべきです..私は少なくとも2000年から3000年までの有効な年を意味します。よろしくお願いします。

function checkDates(){
  var sdate = "2013-01-02";
  var edate = "2013-01-02";

  if (!isValidDate(sdate)) {
         alert("Report Start Date is Invalid!!");
         return false;
    } 

    if (!isValidDate(edate)) {
     alert("Report End Date is Invalid!!");
     return false;
   }
   return true;
}


function isValidDate(sText) {

    var reDate = /(?:([0-9]{4}) [ -](0[1-9]|[12][0-9]|3[01])[ -]0[1-9]|1[012])/;  // yy/mm/dd
    return reDate.test(sText);
}
4

2 に答える 2

6

正規表現に余分なスペースがあり、角かっこがありません(角かっこの問題により、2012-aa-xx日付が受け入れられます:

/(?:([0-9]{4}) [ -](0[1-9]|[12][0-9]|3[01])[ -]0[1-9]|1[012])/
              ^                               ^
-------------/-------------------------------/

それで:

([0-9]{4}[ -](0[1-9]|[12][0-9]|3[01])[ -](0[1-9]|1[012]))
于 2013-01-02T09:18:48.133 に答える
1

以下の式も機能します

/(?:19|20\d{2})\-(?:0[1-9]|1[0-2])\-(?:0[1-9]|[12][0-9]|3[01])/

ありがとう、Dhiraj

于 2013-01-02T09:36:49.157 に答える