csdn上的兄弟给我的邮件地址合法性检验函数出了问题!

for123 2004-08-07 05:36:06
前几天一位老兄给我一个邮件地址合法性检验函数:

function IsMail(ChkStr)
{
var re=/\w+@\w+\.\w+/
if (re.test(ChkStr)==false)
{
alert('邮件格式非法!');
return false;
}
else
{
return true;
}

}
我用了后,什么都好,就是有一个小问题。
当@前面字母之间有"-"中划线或下划线时,邮箱地址检验正确。
可是当@后面的字母之间有"-"中划线或下划线时,比如abc@wk-sh.com
这样的邮件地址提示说不合法。
可见这个函数解决了@前的问题,却没有解决@后的中(下)划线问题.
我要使得检验abc_ok@sohu.com,abc-ok@sohu.com,abc@sohu-sh.com abc@sohu_sh.com都应认为合法。请问如何修正上述函数?或者给一个真正好的函数给我。
多谢!
...全文
86 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
alcoholwang 2004-08-07
还有ASP用于提交后检测
'检测EMAIL合法性
Function IsValidEmail(email)
Dim names, name, i, c
IsValidEmail = True
names = Split(email, "@")
If UBound(names) <> 1 Then
IsValidEmail = False
Exit Function
End if
For Each name IN names
If Len(name) <= 0 Then
IsValidEmail = False
Exit Function
End If
For i = 1 TO Len(name)
c = Lcase(Mid(name, i, 1))
If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 AND Not IsNumeric(c) Then
IsValidEmail = False
Exit Function
End If
Next
If Left(name, 1) = "." OR Right(name, 1) = "." Then
IsValidEmail = False
Exit Function
End If
Next
If InStr(names(1), ".") <= 0 Then
IsValidEmail = False
Exit Function
End If
i = Len(names(1)) - InStrRev(names(1), ".")
If i <> 2 AND i <> 3 Then
IsValidEmail = False
Exit Function
End If
If InStr(email, "..") > 0 Then
IsValidEmail = False
End If
End Function
  • 打赏
  • 举报
回复
alcoholwang 2004-08-07
function ChkEmail(a) {
var i=a.length;
var temp = a.indexOf('@');
var tempd = a.indexOf('.');
if (temp > 1) {
if ((i-temp) > 3){
if ((i-tempd)>0){
return 1;
}
}
}
return 0;
}


试试看这段,不知道行不行
  • 打赏
  • 举报
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-08-07 05:36
社区公告
暂无公告