如何使用检查生日输入的表达式匹配像dd/mm/yyyy这样的格式?以下是我到目前为止所发布的内容,但如果我把它放到99/99/9999那也需要这个!
if (!preg_match("/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/", $cnt_birthday))
{
$error = true;
echo '<error elementid="cnt_birthday" message="BIRTHDAY - Only this birthday format - dd/mm/yyyy - is accepted."/>';
}
Run Code Online (Sandbox Code Playgroud)
如何确保dd仅为01到31,mm为01到12?但我相信如何限制yyyy ...我认为理论9999应该是可以接受的......如果你有更好的主意,请告诉我!
谢谢,刘
我一直在寻找其他类似的帖子,问题似乎是一个未转义的斜线.但是我逃避了他们.
这是字符串的外观:
23/12/2012
这就是我宣布验证规则的方式:
regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)[0-9]{2}$/]
Run Code Online (Sandbox Code Playgroud)
结束分隔符在那里,日期的两个中间斜杠用反斜杠进行转义.我也试过这个略有不同,但我得到了同样的错误:
regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d$/]
Run Code Online (Sandbox Code Playgroud)
哪里出错?
编辑:
根据您的建议,我尝试使用回调函数.这是声明,它位于正在执行表单验证的控制器类中:
function mach_date($date) {
/* DEBUG */ echo 'Here I am!'; exit; // execution should stop here displaying the echo
return (bool)preg_match('/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d$/', $date);
}
Run Code Online (Sandbox Code Playgroud)
application/config/form_validation.php中的验证规则:
$config = array(
// other validation groups.....,
'articles' => array(
// other validated fields.....,
array(
'field' => 'date_p',
'label' => 'Publishing date',
'rules' => 'callback_match_date'
)
)
);
Run Code Online (Sandbox Code Playgroud)