簡體   English   中英

jQuery-使用正則表達式驗證真實日期(如30/02/2014)。 30 Febrarury無效日期

[英]Jquery - Validate real dates like 30/02/2014 using Regular Expression. 30 Febrarury is not valid date

我想驗證日期,例如30/02/2014和30/09/2014,如何使用正則表達式驗證這些日期。

有什么好辦法做到這一點。

您可以調用以下方法並根據自己的要求正確使用。

function validateRealDates(date){
var dateNumbers = date.split("/");
   if(dateNumbers[0] > 12){
       var $1 = dateNumbers[2];
       var $2 = dateNumbers[1];
       var $3 = dateNumbers[0];
   }else{
       if(dateNumbers[0] < 12){
           var $1 = dateNumbers[2];
           var $2 = dateNumbers[0];
           var $3 = dateNumbers[1];
       }else{
           var dateNumbers = date.split("-");
           var newMonth;
           var month = dateNumbers[1];
           switch (month) {

              case "Jan": 
                        newMonth = 1;
                        break;
              case "Feb": 
                        newMonth = 2;
                        break;
              case "Mar": 
                        newMonth = 3;
                        break;
              case "Apr": 
                        newMonth = 4;
                        break;
              case "May":
                        newMonth = 5;
                        break;
              case "Jun": 
                        newMonth = 6;
                        break;
              case "Jul": 
                        newMonth = 7;
                        break;
              case "Aug": 
                        newMonth = 8;
                        break;
              case "Sep": 
                        newMonth = 9;
                        break;
              case "Oct": 
                        newMonth = 10;
                        break;
              case "Nov": 
                        newMonth = 11;
                        break;
              case "Dec": 
                        newMonth = 12;
                        break;

              default:
                        break;
         }
           dateNumbers[1] = newMonth
           var $1 = dateNumbers[2];
           var $2 = dateNumbers[1];
           var $3 = dateNumbers[0];

       }
   }
   if ($3 == 31 && ($2 == 4 || $2 == 6 || $2 == 9 || $2 == 11)) {
          return false; 
   }else{
       if ($3 >= 30 && $2 == 2) {
          return false; 
       }else{
           if ($2 == 2 && $3 == 29 && !($1 % 4 == 0 && ($1 % 100 != 0 || $1 % 400 == 0))) {
               return false; 
           }else{
               return true; 
           }
      }
    }
  }

對於一般

sub isvaliddate {
    my $input = shift;
    if ($input =~ m!^((?:19|20)\d\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$!) {
    # At this point, $1 holds the year, $2 the month and $3 the day of the date entered
    if ($3 == 31 and ($2 == 4 or $2 == 6 or $2 == 9 or $2 == 11)) {
          return 0; # 31st of a month with 30 days
    } elsif ($3 >= 30 and $2 == 2) {
           return 0; # February 30th or 31st
      } elsif ($2 == 2 and $3 == 29 and not ($1 % 4 == 0 and ($1 % 100 !   =    0 or $1 % 400 == 0))) {
    return 0; # February 29th outside a leap year
    } else {
    return 1; # Valid date
    }
    } else {
    return 0; # Not a date
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM