日期验证的正则表达式帮助 - 月-日-年 - PHP


Regular Expression Help for Date Validation - mm-dd-yyyy - PHP

 if(preg_match('/^[0-9]{1,2}'-[0-9]{1,2}'-[0-9]{4}$/', '10-30-2013')){
   echo 'true';
}
else {
   echo 'false';
}

这不给我真。我想我错了regex.请告诉如何更正此regex

我建议不要为此使用正则表达式 - 由于任何给定月份的天数可能发生变化,使用正则表达式进行日期验证是一件非常困难的事情。

简单地使用 PHP 的 DateTime 类将其实际解析为日期对象要好得多。这也将验证它;如果它不符合指定的格式,则不会解析。

$dateObj = DateTime::CreateFromFormat('m-d-Y',$inputString);

有关CreateFromFormat(),请参阅 PHP 手册页。

你应该使用专用函数来解析日期,即:

if (strptime ('10-30-2013'  , 'm-d-Y') !== false) {
  echo 'true'.PHP_EOL;
} else {
  echo 'true'.PHP_EOL;
}

实际上,正如其他人所确认的那样,您的正则表达式工作正常并返回true .

但是当你缩小代码时,我认为你试图向我们展示的输入字符串不仅仅是一个date它在一个字符串中,或者可能有尾随空格!

因此,在正则表达式中使用 ^$ 将导致失败。