帮忙看看这段代码,我理解的有没有问题?

Shiyl 2004-01-08 02:56:55
<%
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)) 'mid函数返回name字符串中从i开始长度
'是1的字符,然后由lcase函数将它转换
'成小写字符
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
%>
----------------------------------------------------------------
这是一个判断email合法性的函数,但是为什么感觉有重复的判断在里面,有些不明白。
1、name是干什么用的?
2、names = Split(email, "@")
names是一个数组存放email表达式,那“@”有什么作用呢?
3、if UBound(names) <> 1 then
IsValidEmail = false
exit function
end if
UBOND()的作用是返回指定的数组维可用的最大下标,但是这句话判断结果不为1的时候为什么就要退出函数呢?我认为输入email后,它的值肯定不为1。
4、if InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 and not IsNumeric(c)then
'判断C在不在这些字符里,如果不在退出
if InStr(names(1), ".") <= 0 then
判断name里有没有“.”,如果不存在那么退出。
这两个判断都判断了“.”存在与否,是否重复了?
5、i = Len(names(1)) - InStrRev(names(1), ".")
判断在name字符串中“.”后面有几位字符,这么理解正确吗?
6、if InStr(email, "..") > 0 then
这是判断什么的?
最近刚看ASP希望各位高手多多指教。
...全文
59 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shiyl 2004-01-09
  • 打赏
  • 举报
回复
非常感谢 yangzixp(扬子) 兄,现在我明白了,以后有机会再向你请教。揭贴。
yangzixp 2004-01-08
  • 打赏
  • 举报
回复
我给你注释一下你什么都懂了。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<%
function IsValidEmail(email)

dim names, name, i, c

IsValidEmail = true
names = Split(email, "@") '用@分割输入的mail
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)) 'mid函数返回name字符串中从i开始长度
'是1的字符,然后由lcase函数将它转换
'成小写字符
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
%>

</BODY>
</HTML>
Shiyl 2004-01-08
  • 打赏
  • 举报
回复
自己顶以下

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧