我的电子邮件正则表达式有什么问题?

问题描述:

我有以下的正则表达式:我的电子邮件正则表达式有什么问题?

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] 

它匹配。为什么?

+1

因为这是一个有效的电子邮件地址。 – JJJ

+0

@Juhana,你能解释一下吗? – uksz

+1

根据规范,TLD本身在地址中是允许的。实际上没有人有这样的公开地址,但它仍然有效。 – JJJ

电子邮件服务不必连接到任何域。 以下电子邮件是正确的:

查看更多 “有效的电子邮件地址” 下: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]"));