如何判断电子邮件的地址格式是否正确

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何判断电子邮件的地址格式是否正确?

我在网站上设置了邮件列表功能,实现用户自动订阅和发送,但很多用户输入和提交的邮件地址格式都是无效的,无法处理。请问如何解决这一问题?

我们可用下列办法来解决这一问题——但只是能够判断每个电子邮件地址的格式是否有效,并不能保证该地址确实存在。

第一种办法:

<%

Function IsValidEmail(Email)

ValidFlag = False

If (Email <> "") And (InStr(1, Email, "@") > 0) And (InStr(1, Email, ".") > 0) Then

atCount = 0

SpecialFlag = False

For atLoop = 1 To Len(Email)

atChr = Mid(Email, atLoop, 1)

If atChr = "@" Then atCount = atCount + 1

If (atChr >= Chr(32)) And (atChr <= Chr(44)) Then SpecialFlag = True

If (atChr = Chr(47)) Or (atChr = Chr(96)) Or (atChr >= Chr(123)) Then SpecialFlag = True

If (atChr >= Chr(58)) And (atChr <= Chr(63)) Then SpecialFlag = True

If (atChr >= Chr(91)) And (atChr <= Chr(94)) Then SpecialFlag = True

Next

If (atCount = 1) And (SpecialFlag = False) Then

BadFlag = False

tAry1 = Split(Email, "@")

UserName = tAry1(0)

DomainName = tAry1(1)

If (UserName = "") Or (DomainName = "") Then BadFlag = True

If Mid(DomainName, 1, 1) = "." then BadFlag = True

If Mid(DomainName, Len(DomainName), 1) = "." then BadFlag = True

ValidFlag = True

' 格式正确返回Ture

End If

End If

If BadFlag = True Then ValidFlag = False

' 格式不正确返回False

IsValidEmail = ValidFlag

End Function

%>

第二种办法:

<%

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

%>

第三种办法,用下面这个函数进行判断。它会检查邮件地址是否含有“@”,以及“.”是否在“@”后面:

function isEmail(pInString)

lAt = False

lDot = false

for x = 2 to len(pInstring)-1

if mid(pInString,x,1) = "@" then lAt = True

if mid(pInString,x,1) = "." and lAt = True then lDot = True next

if lAt = True and lDot = True then

isEmail = True

else

isEmail = False

end if

end function

相关文档
最新文档