即使我输入“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”,它不会出错。 有人可以告诉正则表达式应该是什么也有这个错误。
答案 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 而不是编写自己的正则表达式。