Regex 在laravel上使用正则表达式验证日期时间
Laravel regex日期验证未按预期工作,regex应在时间部分中匹配Regex 在laravel上使用正则表达式验证日期时间,regex,laravel,Regex,Laravel,Laravel regex日期验证未按预期工作,regex应在时间部分中匹配09:00:00到16:00:00,但它给出了一个内部服务器错误: $validator = Validator::make($request->all(), [ 'datetime' => 'required|date|after:tomorrow|regex:/((0[9]|1[0-5]):[0-5][0]:00)|(16:00:00)$/g', 'sub
09:00:00
到16:00:00
,但它给出了一个内部服务器错误:
$validator = Validator::make($request->all(), [
'datetime' => 'required|date|after:tomorrow|regex:/((0[9]|1[0-5]):[0-5][0]:00)|(16:00:00)$/g',
'subject' => 'required|max:255',
]);
if ($validator->fails()) {
return response()->json([
'status' => '500',
'success' => 'false',
'error' => $validator->messages()
]);
}
如果我在没有正则表达式的情况下再次尝试,验证将按预期工作,并将插入datetime字段,我怀疑它试图将正则表达式与date对象匹配,而不是与它的字符串表示形式匹配,但我不知道从何处开始文档没有详细介绍正则表达式
理想情况下,我希望它显示一条错误消息,内容是“输入上午9点到下午4点之间的时间,仅限小时”,而不是失败
谢谢你(我的):
注意:使用正则表达式模式时,可能需要在数组中指定规则,而不是使用管道分隔符,特别是当正则表达式包含管道字符时
那么,试试这个:
$validator = Validator::make($request->all(), [
'datetime' => [
'required',
'date',
'after:tomorrow',
'regex:/((0[9]|1[0-5]):[0-5][0]:00)|(16:00:00)$/',
],
'subject' => 'required|max:255',
]);
注意:我删除了g
标志,因为它是不必要的。表达式要么匹配,要么不匹配——无需全局查找所有匹配项
至于更新验证程序类返回的错误消息,您只需: 来自(我的): 注意:使用正则表达式模式时,可能需要在数组中指定规则,而不是使用管道分隔符,特别是当正则表达式包含管道字符时 那么,试试这个:
$validator = Validator::make($request->all(), [
'datetime' => [
'required',
'date',
'after:tomorrow',
'regex:/((0[9]|1[0-5]):[0-5][0]:00)|(16:00:00)$/',
],
'subject' => 'required|max:255',
]);
注意:我删除了g
标志,因为它是不必要的。表达式要么匹配,要么不匹配——无需全局查找所有匹配项
至于更新验证程序类返回的错误消息,您只需:
好的,正则表达式应该是
regex://^((09|1[0-5]):[0-5][0-9]:00 | 16:00:00)$/
,但这里很可能需要一个数组,而不是
分隔的参数。不应该,因为这是字符串的第二部分,^使其无效,我正在测试日期时间的时间:嗯,正则表达式应该是regex://^((09 | 1)[0-5]:[0-5][0-9]:00 | 16:00:00)$/
但很可能这里需要一个数组,而不是|
分隔参数。不应该,因为这是字符串的第二部分,^使其无效,我正在测试日期时间的时间:好的,谢谢,我确实看到了,但假设它是允许的(也许不应该说may),我该如何添加自定义消息?我需要创建一个全新的验证器类,还是只需为此添加一个参数?@CraigHarley他们肯定可以更好地使用这个词。据我所知,除非在表达式中使用管道分隔符,否则没有必要添加自定义消息。我已经更新了我的答案来解释自定义消息。好的,谢谢,我这样做了e但假设这是允许的(也许不应该说可能),我该如何添加自定义消息?我需要创建一个全新的验证器类,还是只需为此添加一个参数?@CraigHarley他们肯定可以更好地使用这个词。据我所知,除非在表达式中使用管道分隔符,否则没有必要这样做。我已经更新了我的答案来解释自定义消息。