我一直在寻找其他类似的帖子,问题似乎是一个未转义的斜线。但是我正在逃避他们。
字符串应该是这样的:
23/12/2012
这就是我声明验证规则的方式:
regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)[0-9]{2}$/]
结束分隔符在那里,日期的两个中间斜杠用反斜杠转义。我也试过这个略有不同,但我得到了同样的错误:
regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d$/]
哪里出错了?
编辑:
按照您的建议,我尝试使用回调函数。这是声明,它位于执行表单验证的 Controller 类中:
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);
}
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'
)
)
);
最佳答案
当你设置验证规则时,你用 | 分隔它们所以你的正则表达式中的 |'s 导致验证规则在那些地方 split ,这导致了错误。讨论here在这个问题上。这似乎是 codeigniter 中的一个限制或错误。您可以通过运行带或不带 | 的正则表达式来测试它,看看使用管道是否会导致错误。如果是这种情况,那么您可能必须通过其他方式通过正则表达式进行验证,也许使用此 page 中详述的回调函数您的函数将使用正则表达式执行 preg_match,当然这需要在函数内部,然后返回 true/false。
关于php - CodeIgniter form_validation 中的 regex_match 生成 : Message: preg_match(): No ending delimiter '/' found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13804721/