相关疑难解决方法(0)

preg_match:检查生日格式(年/月/日)

如何使用检查生日输入的表达式匹配像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应该是可以接受的......如果你有更好的主意,请告诉我!

谢谢,刘

php regex preg-match

10
推荐指数
2
解决办法
6万
查看次数

CodeIgniter中的regex_match form_validation生成:消息:preg_match():找不到结束分隔符'/'

我一直在寻找其他类似的帖子,问题似乎是一个未转义的斜线.但是我逃避了他们.

这是字符串的外观:

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)

php regex codeigniter

6
推荐指数
1
解决办法
4449
查看次数

标签 统计

php ×2

regex ×2

codeigniter ×1

preg-match ×1