Laravel:电子邮件的自定义验证

inc*_*eal 3 email laravel laravel-5.3

我想接受一个服务器上的邮件ID,当有人注册时,请说'@ myemail.com'.如果给出任何其他邮件地址,它将说明您的邮件ID无效.我该怎么办??

   protected function validator(array $data)
  {
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
        /*'usertype' => 'required',*/
     ]);
  }
Run Code Online (Sandbox Code Playgroud)

它是我的注册控制器的验证器

Mil*_*ETE 6

自 laravel 5.8.17 起 ends_with添加了验证规则,如下所示:

$rules = [
    'email' => 'required|ends_with:laravel.com,jasonmccreary.me,gmail.com',
];
Run Code Online (Sandbox Code Playgroud)


Seb*_*ian 5

你可以使用正则表达式模式.将此附加到您的电子邮件验证:

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|regex:/(.*)@myemail\.com/i|unique:users',
        'password' => 'required|min:6|confirmed',
        /*'usertype' => 'required',*/
     ]);
}
Run Code Online (Sandbox Code Playgroud)

编辑
对于多个域,您必须使用带有验证的数组,因为两个邮件域之间存在管道:

'email' => ['required', 'max:255', 'email', 'regex:/(.*)@(mrbglobalbd|millwardbrown)\.com/i', 'unique:users'],
Run Code Online (Sandbox Code Playgroud)

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