Php Laravel time 24小时格式正则表达式错误(无结束分隔符)
所以我有这个:Php Laravel time 24小时格式正则表达式错误(无结束分隔符),php,regex,laravel,Php,Regex,Laravel,所以我有这个: '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个字母) 但我对返回的开始时间有问题 preg_match():未找到结尾分隔符“/”,异常: “ErrorException”,…} 我想验证的是24小时格式
'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个字母)
但我对返回的开始时间有问题
preg_match():未找到结尾分隔符“/”,异常:
“ErrorException”,…}
我想验证的是24小时格式,用户广告可能是上午或下午,例如:05:10下午,所以我想验证前5个字符,并释放其余字符,我认为这是正确的
那么,让它运行我还缺少什么呢?试试这个:
'start_time' => ['date_format:H:i', 'regex:/^((([01]?[0-9]|2[0-3]):[0-5][0-9])?)$/'],
问题是正则表达式中的
|
字符。Laravel将其用作规则之间的分隔符。正则表达式中的字符管道|
与segrating规则中的|
冲突。您必须初始化数组:
'start_time' => ['date_format:H:i', 'regex:/^((([01]?[0-9]|2[0-3]):[0-5][0-9])?)$/']
您的规则做得很好,但您需要知道,使用管道分隔的正则表达式指定验证规则可能导致不希望的行为 定义验证规则的正确方法应为:
'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])?)$/'],
您可以在官方文件上阅读:
正则表达式:模式
验证中的字段必须与给定的正则表达式匹配
注意:使用正则表达式模式时,可能需要在数组中指定规则,而不是使用管道分隔符,特别是当正则表达式包含管道字符时
谢谢,它是有效的,你只是错过了最后一个逗号。但现在的问题是,为什么它使用没有数组的标题?因为它的正则表达式中没有管道。你只需要在正则表达式包含
.OIC时将规则放入数组中就行了!谢谢!谢谢!为什么不在标题中也添加它?我想知道为什么没有数组这是因为在开始时,您在正则表达式中使用管道符号。laravel验证将其作为单独的验证。