我正在尝试检查最终用户输入的日期是否采用YYYY-MM-DD格式。正则表达式从来都不是我的强项,我设置的preg_match()总是得到一个假返回值。
因此,我假设我把正则表达式弄得一团糟,详细说明如下。
$date="2012-09-12";
if (preg_match("^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$",$date))
{
return true;
}else{
return false;
}
有什么想法吗?
发布于 2012-11-02 19:33:13
尝尝这个。
$date="2012-09-12";
if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date)) {
return true;
} else {
return false;
}
发布于 2012-11-02 19:34:11
你可以这样做:
if (preg_match("/\d{4}\-\d{2}-\d{2}/", $date)) {
echo 'true';
} else {
echo 'false';
}
但是你最好使用这个:
$date = DateTime::createFromFormat('Y-m-d', $date);
if ($date) {
echo $date -> format('Y-m-d');
}
在这种情况下,你将得到一个比字符串更容易使用的对象。
发布于 2016-02-21 07:11:40
我知道这是一个老问题。但我想我有一个很好的解决方案。
$date = "2016-02-21";
$format = "Y-m-d";
if(date($format, strtotime($date)) == date($date)) {
echo "true";
} else {
echo "false";
}
你可以试试。如果将日期更改为21.02.2016,则回应为false。如果在此之后将格式更改为d.m.Y,则回声为真。
有了这段简单的代码,您应该能够检查使用了哪种日期格式,而无需由正则表达式进行检查。
也许有一个人会在每一个案例上测试它。但我认为我的想法总体上是有效的。对我来说,这似乎是合乎逻辑的。
https://stackoverflow.com/questions/13194322
复制相似问题