Laravel:电子邮件验证

时间:2019-11-22 14:23:53

标签: php regex laravel email-validation laravel-6

我不知道如何为电子邮件字段制定验证规则。 当有人注册时,我想接受不是来自服务器的邮件ID,例如“ @ myemail.com,@ yahoo.com,@ outlook.com”。如果提供了此邮件地址,则会显示您的邮件ID无效。我该怎么办?

请帮助我,这是我的ResigterController.php

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
        'mobile_no' => ['required', 'string', 'min:10'],
        'company' => ['required', 'string', 'max:255'],
        'username' => ['required', 'string', 'max:255', 'unique:users'],

    ]);
}

controller.php

config.php

并且我的配置目录中没有email.php。

1 个答案:

答案 0 :(得分:1)

您可以在此之上添加一个正则表达式验证。

$rules = [
    'name' => ['required', 'string', 'max:255'],
    'email' => [
        'required',
        'string',
        'email',
        'max:255',
        'unique:users',
        'regex:/^\w+[-\.\w]*@(?!(?:outlook|myemail|yahoo)\.com$)\w+[-\.\w]*?\.\w{2,4}$/'
    ],
    'password' => ['required', 'string', 'min:8', 'confirmed'],
    'mobile_no' => ['required', 'string', 'min:10'],
    'company' => ['required', 'string', 'max:255'],
    'username' => ['required', 'string', 'max:255', 'unique:users'],
];
// Add a custom message for regex validation on email field.
$messages = [
    'email.regex' => 'We do not accept mails with this domain.'
];

Validator::make($data, $rules, $messages);

我改编了a reply to another question中的正则表达式。正则表达式应根据regex101.com起作用。

另一个选择是制定自己的验证规则。请参阅documentation