在使用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;
}
}