我在使用Javascript验证电子邮件地址客户端方面遇到了一些麻烦。经过大量的搜索,我找到了一个正则表达式,如下所示: -
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$
我测试过的大多数电子邮件ID工作正常。但突然间我发现它也在说电子邮件的.com.com
类扩展,这对我来说是一个严重的错误。
我的问题是如何修改所提到的正则表达式,这也会使.com.com
无效。
我还应该提一下,我也尝试过许多其他正则表达式,但它们似乎都有同样提到的问题......
谢谢...
答案 0 :(得分:1)
试试这个正则表达式:
function verifyEmail(){
var status = false;
var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
if (document.myform.email1.value.search(emailRegEx) == -1) {
alert("Please enter a valid email address.");
}
else{
status = true;
}
return status;
}
答案 1 :(得分:1)
这将使以.com.com
结尾的任何地址无效:
/^([A-Za-z0-9_\-\.])+\@(?![A-Za-z0-9_\-\.]+\.com\.com)([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$
这也会使以@com.com
结尾的那些无效:
/^([A-Za-z0-9_\-\.])+\@(?!(?:[A-Za-z0-9_\-\.]+\.)?com\.com)([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$
最后,这将使那些以任何重复结尾的内容无效,例如.net.net,.au.au等:
/^([A-Za-z0-9_\-\.])+\@(?!(?:[A-Za-z0-9_\-\.]+\.)?([A-Za-z]{2,4})\.\2)([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$
答案 2 :(得分:0)
function emailCheck (emailStr) {
var checkTLD=1;
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);
if (matchArray==null) {
alert("Email address seems incorrect (check @ and .'s)");
return false;
}
我的ISP网站的官方电子邮件检查方法。 没有版权。所以你可以使用它。