我的电子邮件正则表达式有什么问题?
问题描述:
我有以下的正则表达式:我的电子邮件正则表达式有什么问题?
var emailRegex = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
当我试图键入:
[email protected]
它匹配。为什么?
答
电子邮件服务不必连接到任何域。 以下电子邮件是正确的:
- cezary @本地
- [email protected]
- cezary @域名
- cezary @ COM
查看更多 “有效的电子邮件地址” 下:https://en.wikipedia.org/wiki/Email_address
因此,如果您只想允许公共电子邮件,请尝试其他正则表达式: - )
答
Validate email address in JavaScript?回答你的问题
试试这个:
function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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,}))$/;
return re.test(email);
}
alert(validateEmail("[email protected]"));
因为这是一个有效的电子邮件地址。 – JJJ
@Juhana,你能解释一下吗? – uksz
根据规范,TLD本身在地址中是允许的。实际上没有人有这样的公开地址,但它仍然有效。 – JJJ