这是一个很老的问题,所以我更新了这个答案以考虑 HTML 5 电子邮件类型。
对于 HTML 5,您实际上根本不需要 JavaScript;只需使用电子邮件输入类型:
<input type="email" />
MozDev上有更多可用信息。
原答案如下
首先 - 我会推荐 Hexillion 的电子邮件验证器 RegEx:http ://hexillion.com/samples/
它非常全面 - :
^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[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]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$
我认为您需要在 JavaScript 中使用一个函数,例如:
function validateEmail(sEmail) {
var reEmail = /^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[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]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/;
if(!sEmail.match(reEmail)) {
alert("Invalid email address");
return false;
}
return true;
}
在 HTML 输入中,您需要使用 onblur 触发事件 - 执行此操作的简单方法是简单地添加如下内容:
<input type="text" name="email" onblur="validateEmail(this.value);" />
当然,这缺少一些健全性检查并且不会进行域验证(必须在服务器端完成)-但它应该为您提供一个非常可靠的 JS 电子邮件格式验证器。
注意:我倾向于使用match()
string 方法而不是test()
RegExp 方法,但这应该没有任何区别。