Laravel时间24h格式正则表达式错误(无结束分隔符)

问题描述 投票:2回答: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个字母)但是我遇到了start_time的问题,而这正在返回

preg_match():没有结束分隔符'/'found“,异常:”ErrorException“,...}

我想要的是验证24小时格式与用户广告AM或PM的可能性,例如:下午05:10,所以我想验证前5个字符并释放其余的,我认为这是正确的。

那么,我错过了什么让它运行?

php regex laravel
3个回答
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])?)$/'],

您可以阅读官方文档:

正则表达式:模式

验证字段必须与给定的正则表达式匹配。

注意:使用正则表达式模式时,可能需要在数组中指定规则而不是使用管道分隔符,尤其是在正则表达式包含管道符时。

https://laravel.com/docs/5.6/validation#rule-regex


2
投票

试试这个:

'start_time' => ['date_format:H:i', 'regex:/^((([01]?[0-9]|2[0-3]):[0-5][0-9])?)$/'],

问题是正则表达式中的|字符。 Laravel将它用作规则之间的分隔符。


2
投票

正则表达式中的字符管道qazxsw poi在分离规则中与qazxsw poi冲突。你必须初始化一个数组:

|
© www.soinside.com 2019 - 2024. All rights reserved.