拉拉维尔电子邮件验证让"user@hotmail"通过



我正在通过FormRequest使用Laravel的验证。代码摘录在这里。似乎 laravel 的验证是让像"user@hotmail"这样的电子邮件地址通过。

namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class DirectorForm extends FormRequest
{
    public function rules()
    {
        return [
            'email' => 'required|email',
        ];
    }
}

似乎上述验证允许"username@hotmail",这不是有效的电子邮件地址。

我设置错了吗

实际上user@hotmail是有效的电子邮件,因为user@localhost也可以是有效的电子邮件地址。
如果您想检查电子邮件地址是否也包含 TLD,您可以尝试:

namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class DirectorForm extends FormRequest
{
    public function rules()
    {
        return [
            'email' => 'required|regex:.+@.+..+',
        ];
    }
}

有关更多正则表达式电子邮件验证规则,请查看此答案。

使用正则表达式: https://emailregex.com/

并与Laravel正则表达式规则相结合:https://laravel.com/docs/5.8/validation#rule-regex

似乎验证正在按预期工作。感谢您的阅读!

您可以

AppServiceProvider电子邮件编写自定义验证,例如

引导方式

Validator::extend('email_address', function ($attribute, $value, $parameters, $validator) {
            return (!preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $value)) ? FALSE : TRUE;
        });

Rules

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

最新更新