所以我有这个:
'title' => 'required|max:100|regex:/^(?=.*[a-zA-Z]).+$/',
'start_time' => 'date_format:H:i|regex:/^((([01]?[0-9]|2[0-3]):[0-5][0-9])?)$/',
标题工作正常(用户必须输入至少1个字母) 但是我遇到了返回的start_time问题
preg_match():没有结尾分隔符' /'发现",例外: " ErrorException",...}
我想要的是验证24h格式,可能是用户广告AM或PM,例如:下午05:10,所以我想验证前5个字符并释放其余的字符,我认为它是'是的。
那么,我错过了什么让它运行?
答案 0 :(得分:3)
您的规则已经完成但您需要知道,指定验证规则,其中正则表达式由管道分隔可能导致导致意外行为。
定义验证规则的正确方法应该是:
'title' => 'required|max:100|regex:/^(?=.*[a-zA-Z]).+$/',
'start_time' => ['date_format:H:i','regex:/^((([01]?[0-9]|2[0-3]):[0-5][0-9])?)$/'],
您可以阅读官方文档:
正则表达式:图案
验证字段必须与给定的正则表达式匹配。
注意:使用正则表达式模式时,可能需要在数组中指定规则而不是使用管道分隔符,尤其是在正则表达式包含管道符时。
答案 1 :(得分:2)
试试这个:
'start_time' => ['date_format:H:i', 'regex:/^((([01]?[0-9]|2[0-3]):[0-5][0-9])?)$/'],
问题是正则表达式中的|
字符。 Laravel将它用作规则之间的分隔符。
答案 2 :(得分:2)
正则表达式中的字符管|
在分离规则中与|
冲突。你必须初始化一个数组:
'start_time' => ['date_format:H:i', 'regex:/^((([01]?[0-9]|2[0-3]):[0-5][0-9])?)$/']