如何验证Email地址的合法性
作者:闪吧 类型:原创 来源:闪吧
如何验证Email地址的合法性
解决思路: 要验证Email地址的合法性,首先必须知道一个合法的Email地址应该满足的条件:
1.以字母、数字、下划线或点开始
2.用户名后紧跟着"@"
3."@"后是域名或IP,不少于四个字符
4."@"后存在点"."
5.点"."不能是最后一个字符
具体步骤: 知道条件,现在就开始验证:
方法一:用indexOf判断"@"和"."的位置来确定Email地址的合法性
<script>
function isEmail(){
//将所输入的Email地址作为变量赋给字符串变量address
var address=email.value
//如果Email地址的长度小于6,肯定是非法的,所以返回假if(address.length<6) return false
//返回字符"@"在字符串address中的位置(从0开始)
var at_pos=address.indexOf("@")
//返回字符"."在字符串address中的位置(从0开始)
var dot_pos=address.lastIndexOf(".")
/*如果address字符串中存在"@"和".",并且"@"不在第一位也不在倒数四位之内、"@"往后一位不是".","."也不在倒数两位之内,返回真,否则返回假*/
return (at_pos>0&&at_pos<address.length-4&&dot_pos>0&&dot_pos>at_pos+1&&address.charAt(at_pos+1)!="."&&dot_pos<address.length-2)
}
</script>
<input id="email" name="email">
<button onClick="alert(isEmail())">检查</button>

图1.4.31 对非法Email地址的错误判断
方法二:仅凭字符串的处理,很难判断验证一个Email地址的合法性的,就上面的代码而言,如果输入"a@b..cd",验证还是通过了(图 1.4.31),现在让我们来试试另一种方法。
<script>
function isEmail(){
//RegExp.test(String),测试String是否匹配RegExp,返回布尔值真或假return /^\w(\w*\.*)*@(\w+\.)+\w{2,4}$/.test(email.value)
}
</script>
<input id="email" name="email">
<button onClick="alert(isEmail())">检查</button>
运行效果:

图1.4.32对非法Email地址的正确判断
方法三:还可以再看严格一点的,限制为小写。
<script>
function isEmail(){
return /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/.test(email.value)
}
</script>
<input id="email" name="email">
<button onClick="alert(isEmail())">检查</button>
特别提示
其实,Email地址合法与否,还没有统一的标准来判断,不同的邮件系统的标准也不一样,所以,最重要的不是判断的代码,而是判断的思路和方法。运行方法三的代码后,分别输入A@b..cd和a@b.cd,效果分别如图1.4.33、图1.4.34所示。

图1.4.33 非法的Email地址

图1.4.33 合法的Email地址
特别说明
对Email地址的验证,主要是基于字符串的,本例中所用到的字符串的方法有indexOf、lastIndexOf和charAt。对于方法二和方法三的正则表达式,可以参考第四部分第三章的问题10。
indexOf返回字符串对象内第一次出现子字符串的字符位置。
lastIndexOf返回字符串对象内最后出现子字符串的字符位置。
charAt 返回指定索引位置处的字符。
责任编辑:kissall 时间:2005年8月29日
- 最近更新
