title: is_date() is malfunctioning
body: <p>i have a php methode that checks if a 
  passed in parameter is a date. Here's it:</p>
  
  <pre class="lang-php prettyprint-override"><code>public function is_Date($str){ 
          if (is_numeric($str) ||  preg_match('^[0-9]^', $str)){  
              $stamp = strtotime($str);
              $month = date( 'm', $stamp ); 
              $day   = date( 'd', $stamp ); 
              $year  = date( 'Y', $stamp ); 
              return checkdate($month, $day, $year); 
          } 
          return false; 
  }
  </code></pre>
  
  <p>then, i test-drove it like this:</p>
  
  <pre class="lang-php prettyprint-override"><code>$var = "100%";
  
  if(is_Date($var)){
     echo $var.' '.'is a date'; 
  } 
  
  $var = "31/03/1970";
  
  if(is_Date($var)){
     echo $var.' '.'is a date'; 
  }
  
  $var = "31/03/2005";
  
  if(is_Date($var)){
     echo $var.' '.'is a date'; 
  }
  
  $var = "31/03/1985";
  
  if(is_Date($var)){
     echo $var.' '.'is a date'; 
  }
  </code></pre>
  
  <p>Note that each of the ifs also has an else statement as in :</p>
  
  <pre class="lang-php prettyprint-override"><code>else{
     echo $var.' '.'is not a date' 
  }
  </code></pre>
  
  <p>OUTPUT:</p>
  
  <pre class="lang-none prettyprint-override"><code>100% is a Date
  31/03/1970 is a Date
  31/03/2005 is a Date
  31/03/1985 is a Date
  </code></pre>
  
  <p>My problem is, why is 100% displaying as a date and why is <code>31/03/1985</code> not being read as a date ?</p>
  
  <p>Any clue as to why will be highly appreciated as i am not too expertise in Regex </p>