Laravel 验证电子邮件地址

ami*_*wat 3 email validation laravel

我在我的 Laravel 申请表中创建了一个接受电子邮件地址的编辑表单。

我在服务器端使用了 Laravel 验证。

当我在没有@ 的情况下传递电子邮件时,它正在正确验证电子邮件地址。

但问题是当我.从电子邮件地址中删除(点)时,它接受它作为有效的电子邮件地址。

请提供建议,为什么会这样。

小智 17

使用 Laravel 7:您可以使用

'email' => 'email:rfc,dns'
Run Code Online (Sandbox Code Playgroud)


alb*_*rus 11

尝试这个:

$this->validate($request, [            
  'email' => 'required|regex:/(.+)@(.+)\.(.+)/i',
]);
Run Code Online (Sandbox Code Playgroud)

  • 应该有一个解释。例如,想法/要点是什么?它有什么限制?它会因什么而失败?众所周知,通过正则表达式进行电子邮件地址验证非常复杂,甚至是不可能的。来自[帮助中心](https://stackoverflow.com/help/promotion):*“...始终解释为什么您提出的解决方案是合适的以及它是如何工作的”*。请通过[编辑(更改)您的答案](https://stackoverflow.com/posts/58725867/edit) 进行回复,而不是在评论中回复(***没有***“编辑:”、“更新:”或类似 - 答案应该看起来像今天写的一样)。 (2认同)

小智 5

这不是 Laravel 的问题。从技术上讲,这是一个有效的电子邮件地址。

请注意,如果您告诉浏览器验证电子邮件地址,它也会通过。

但是您可以使用EmailValidator包来验证电子邮件地址。

首先,还要检查这些:https ://laravel.com/docs/6.x/validation#rule-email

或者,

使用checkdnsrr功能。

<?php

    $email = 'email@gmail.com';
    list($username, $domain) = explode('@', $email);

    if (checkdnsrr($domain, 'MX')) {
      echo "verified";
    }
    else {
      echo "failed";
    }
Run Code Online (Sandbox Code Playgroud)


Ani*_*tha 5

你可以简单地做:

$validator = Validator::make($request->all(), [
        'Email'=>'required|email'
    ]);

Run Code Online (Sandbox Code Playgroud)