【问题标题】:Laravel: validation for emailLaravel:电子邮件验证
【发布时间】:2020-03-18 15:23:38
【问题描述】:

我不知道如何为电子邮件字段制定验证规则。 当有人注册时,我想接受不是来自服务器的邮件 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'],

    ]);
}

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

【问题讨论】:

  • 请将您的代码发布为文本,而不是图像。
  • 你有一个 mail.php 文件。 prntscr.com/q0mvf4
  • 是的,我有。请给我一个例子。我正在使用 laravel 6 的另一件事
  • mail.php文件与验证规则无关。

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


【解决方案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

【讨论】:

  • 工作正常 ;) 谢谢。我认为您在 $messages 列表之后错过了分号?我说的对吗?
  • \w{2,4} 对于 TLD 是错误的,它接受 1_b 但不接受 museum。请看看这些网站:TLD listvalid/invalid addresses; regex for RFC822 email address
  • @Toto 但它正在工作,对不起,我没有得到你
  • @Toto 全面披露:我不知道它是如何或为什么起作用的。我刚刚从另一个答案中改编了一个正则表达式,恰好符合 OP 的要求。
猜你喜欢
  • 2019-02-12
  • 2021-02-15
  • 2017-06-23
  • 1970-01-01
  • 2017-08-21
  • 2021-03-24
  • 2019-12-16
  • 2019-03-05
  • 1970-01-01
相关资源
最近更新 更多