在使用js正则验证邮箱格式时,有时会以为用indexOf()函数也可判断邮箱格式中是否可以包含“@”,看上去似乎可以判断成功了,但这样是有问题的?
例子,一般的邮箱格式为:003567sina@sina.com,若用indexOf来判断此email地址,那么当用户输入了003567sina@sina的时候,检测仍可通过,明显这个地址缺少了后面的“.com”,所以这是不行的,最好还是使用正则来判断,更准确:
 
复制代码 代码示例:
<script type="text/
javascript">
function ischeckemail(){
var email = document.getElementById("emailname").value;
  if (email != "") {
     var reg = /^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;
     isok= reg.test(email );
       if (!isok) {
            alert("邮箱格式不正确,请重新输入!");
            document.getElementById("emailname").focus();
            return false;
        } // www.jb200.com
    };
}
</script>
例子:
 
复制代码 代码示例:
<input type="text" id="emailname">
<input type="submit" value="检测Email地址格式是否正确"
onClick="return ischeckemail()" >
 
请注意id要设成"emailname"。运行结果,当eamil地址格式不对时,会弹出提示框,其它情况未做处理。
例2,JS验证邮箱格式是否正确。
 
复制代码 代码示例:
/* 
*验证邮箱格式是否正确 
*参数strEmail,需要验证的邮箱 
*/ 
function chkEmail(strEmail) { 
if (!/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/.test(strEmail)) { 
return false; 
} 
else { 
return true; 
} 
}