我正在通过FormRequest使用Laravel的验证。代码摘录在这里。 laravel的验证似乎是让“ user @ hotmail”之类的电子邮件地址通过。
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class DirectorForm extends FormRequest
{
public function rules()
{
return [
'email' => 'required|email',
];
}
}
上述验证似乎允许使用“ username @ hotmail”,这不是有效的电子邮件地址。
我是否设置错误
答案 0 :(得分:2)
实际上user@hotmail
是有效的电子邮件,因为user@localhost
也可以是有效的电子邮件地址。
如果要检查电子邮件地址是否还包含TLD,可以尝试:
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class DirectorForm extends FormRequest
{
public function rules()
{
return [
'email' => 'required|regex:.+@.+\..+',
];
}
}
有关更多正则表达式电子邮件验证规则的信息,请查看this answer。
答案 1 :(得分:1)
并与Laravel正则表达式规则结合:https://laravel.com/docs/5.8/validation#rule-regex
答案 2 :(得分:0)
看来验证正在按预期进行。感谢您的阅读!
答案 3 :(得分:0)
您可以在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',
];
}