使用Laravel在单个文本字段中验证多封电子邮件?

时间:2018-08-16 18:27:59

标签: php laravel validation

如何使用Laravel在文本字段中验证倍数是否正确?

示例1:

3封电子邮件很好,因此返回真

enter image description here

示例2:

前2封电子邮件正常,但3封不正确返回假

enter image description here

目前,仅验证单个电子邮件的代码

public function rules()
{
   return [
      'emails' => 'required|email'
   ];
}

谢谢。

PS:电子邮件数量可以变化(1到N)

3 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用正则表达式验证:

public function rules()
{
   return [
      'emails' => ['required','regex:/^(\s?[^\s,]+@[^\s,]+\.[^\s,]+\s?)*(\s?[^\s,]+@[^\s,]+\.[^\s,]+)$/g']
   ];
}

答案 1 :(得分:1)

扩展一个名为“电子邮件”的新验证器,该验证器可扩展您的价值并分别验证每封电子邮件。

一个很好的解决方案可以在这里找到:https://stackoverflow.com/a/29455516/405217

答案 2 :(得分:0)

您如何发布请求?

如果您使用的是javascript / ajax,则可以在发送前先拆分电子邮件字段,然后将其放入三个不同的字段,例如email []。

然后,您可以在控制器中执行类似的操作

    $validator = Validator::make($request->all(), [
        'email.*' => 'required|email',
    ],[
        'email.*.email' => 'In case you are wondering how to set error messages for this kind of validation'
    ]);

如果您不使用Javascript,则可以考虑使用多个字段或编写@TobiasK建议的自定义验证