我正在尝试创建用于匹配给定日期字符串的reg_exp。在该日期字符串中,以下格式是可能的
01.12.1990
01. 12. 1990
我为第一种格式创建了reg_exp(即,天、月、年之间没有空格)。但它也不适用于第二种格式。我如何制作应该同时支持这两种功能的reg_exp并获取日期?
我的reg_exp在下面,
$dateString = "01.12.1990";
preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1]).(0[1-9]|1[0-2]).[0-9]{4}$/",$dateString))
使用''s阅读有关Escape 的更多信息
$dateString = "01 . 12 . 1990";
preg_match_all("/^(0[1-9]|[1-2][0-9]|3[0-1])'s*.'s*(0[1-9]|1[0-2])'s*.'s*[0-9]{4}$/is",$dateString,$res);
print_r($res);
以下和使用str_replace()
将回显:
1990年12月1日火柴
<?php
$dateString = "01. 12. 1990";
$dateString = str_replace(' ', '', $dateString);
echo $dateString;
if( preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1]).(0[1-9]|1[0-2]).[0-9]{4}$/",$dateString)) {
echo "<br>";
echo "Match";
}
else{
echo "<br>";
echo "No match";
}
如果使用内部有字母的$dateString = "01. 12. 1990x";
将回声
1990年12月1日没有匹配
为什么不使用strftime的日期?http://php.net/manual/en/function.strftime.php