Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel time 24小时格式正则表达式错误(无结束分隔符)_Php_Regex_Laravel - Fatal编程技术网

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验证将其作为单独的验证。