Angular 电子邮件验证模式

时间:2021-04-21 06:53:45

标签: angular

即使我输入“xyz@gmail.co”,也可以使用严格错误的电子邮件验证模式。

 emailPattern = '^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$';  
 initLoginForm() {
    this.loginForm = this.formBuilder.group({
      email: ['', Validators.compose([Validators.required, Validators.pattern(this.emailPattern)])],
      password: ['', Validators.required]
    });
  }

但如果我输入“.co”而不是“.com”,它不会出错。 有人可以告诉正则表达式应该是什么也有这个错误。

3 个答案:

答案 0 :(得分:1)

这是因为正则表达式允许它 .[a-z]{2,4}$ 这意味着用户可以在点之后输入 2 到 4 个字符。

Regexp 将仅测试模式,但它没有任何其他逻辑,因此如果您的期望是确保域存在,那么我不建议这样做。

这就是为什么许多平台都有电子邮件验证,因此用户需要在帐户激活之前验证他们的电子邮件。

答案 1 :(得分:0)

如果您想在角度验证中将其用于电子邮件模式,此正则表达式会很有帮助。

     emailRegExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

希望能帮到你

答案 2 :(得分:0)

'.co' 是分配给哥伦比亚的有效互联网国家代码顶级域。

如果您想要一个过滤掉不存在的域的验证器,那应该是一种后端方法,因为前端无法单独进行 MX 查找。

此外,我建议使用 validator.js 而不是编写自己的正则表达式。