用indexOf()函数也可判断邮箱格式中是否可以包含“@”,看上去似乎可以判断成功了,但稍懂点JS的一看就知道问题出在哪儿?就连我这JS菜鸟也发现问题了。
举个例子,一般的邮箱格式为:003567sina@,若用indexOf来判断此email地址,那么当用户输入了003567sina@sina的时候,检测仍可通过,明显这个地址缺少了后面的“.com”,所以这是不行的,最好还是使用正则来判断,更准确:
functionischeckemail(){
varemail=document.getElementById("emailname").value;
if(email!=""){
varreg=/^\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();
returnfalse;
}
};
}
使用例子:
onClick="returnischeckemail()">
请注意id要设成"emailname"。例子运行结果,当eamil地址格式不对的时候,会弹出提示框,其它情况未做处理。