在codeigniter框架中,我正在尝试发送这样的日期(Jalali date(:
/* html */
<input id="start_date" name="start_date" type="text" value="1400/05/29" />
/* php */
/* validation lib */
$this->load->library('form_validation');
/* validation rules */
$this->form_validation->set_rules('start_date', 'Start Date', 'trim|required|exact_length[10]|regex_match[/^([0-9]{4})/((0[1-9])|(1[0-2]))/((0[1-9])|([1-2][0-9])|(3[0-1]))$/]');
但它既不起作用,也不返回错误,而当我删除Regex验证时它起作用。以下方法工作正常并返回true:
<?= (bool) preg_match('/^([0-9]{4})/((0[1-9])|(1[0-2]))/((0[1-9])|([1-2][0-9])|(3[0-1]))$/', '1400/05/29'); ?>
这可能是因为"|"做记号如果是,该如何解决?
你能帮我吗?谢谢
$this->form_validation->set_rules('start_date','StartDate','callback_checkDateFormat');
function checkDateFormat($date) {
if (preg_match("/[0-31]{2}/[0-12]{2}/[0-9]{4}/", $date)) {
if(checkdate(substr($date, 3, 2), substr($date, 0, 2), substr($date, 6, 4)))
return true;
else
return false;
} else {
return false;
}
}