regex_match CI中form_validation生成:消息:的preg_match():

2019-08-03 20:03发布

我一直在寻找其他类似的帖子,问题似乎是一个转义斜杠。 但是我逃避它们。

这是字符串应该是什么样子:

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$/]

哪里的错误?

编辑:

按照你的意见,我一直在使用一个回调函数尝试。 这是声明,它位于在其中正在执行的表单验证控制器类中:

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);
}

应用程序/配置/ form_validation.php验证规则:

$config = array(
     // other validation groups.....,
     'articles' => array(
          // other validated fields.....,
          array(
                'field' => 'date_p',
                'label' => 'Publishing date',
                'rules' => 'callback_match_date'
          )
     )
); 

Answer 1:

当您设置验证规则,你用它们分开| 所以|'在你的正则表达式是导致验证规则在那些分裂和导致错误。 讨论这里的问题。 现在看来,这是在一个笨限制或错误。 您可以通过运行一个正则表达式有和没有测试出来|的,看看管道的使用将导致错误。 如果是这样的话,那么你可能必须通过其他手段正则表达式来验证,也许用一个回调函数这个上详述页面在您的函数将使用它需要的正则表达式是当然的功能里面,然后返回true做的preg_match /假。



文章来源: regex_match in CodeIgniter form_validation generates: Message: preg_match(): No ending delimiter '/' found