Jquery -使用正则表达式验证像30/02/2014这样的真实日期,2月30日不是有效日期



我想验证日期,如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)dd)[- /.](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
    }
}

最新更新