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

来源:asp之家 时间:2010-01-12 20:12:00 

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

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

第一种办法:

<% 
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

 

标签:邮件,email,验证,格式,判断
0
投稿

猜你喜欢

  • 使用单通道实现半透明效果

    2009-12-12 17:40:00
  • 关于MySQL中隐藏空间的问题

    2009-07-30 08:15:00
  • 内联格式化模式(line-height原理)

    2008-06-29 14:37:00
  • JavaScript中尽量用局部变量的原因[译]

    2009-02-20 13:45:00
  • Google logo “我的中国”谷歌国际少年绘画大赛小学1-3年级

    2008-12-19 12:26:00
  • MySQL表设计优化与索引 (八)

    2010-10-25 19:46:00
  • ASP用csDrawGraph组件制作饼图、柱状图

    2008-04-25 22:58:00
  • 解决IE中长按钮的显示问题

    2008-06-24 12:06:00
  • Yahoo!网站性能最佳体验的34条黄金守则—内容

    2008-05-13 12:14:00
  • XMLHTTP中setRequestHeader的参数问题

    2008-09-30 10:48:00
  • 什么是XML

    2008-09-05 17:21:00
  • MySQL 基本概念

    2011-09-10 16:22:34
  • window安装mysql(zip、noinstall)

    2009-10-17 21:10:00
  • asp正则表达式详细说明

    2008-10-23 16:23:00
  • JavaScript 获取客户端计算机硬件及系统信息

    2009-01-13 17:59:00
  • 实用技巧:优化SQL Server数据库查询方法

    2009-02-04 13:46:00
  • 影响SQL Server性能的关键三个方面

    2009-02-13 16:59:00
  • 如何使用ADO.NET连接数据库?

    2010-06-03 10:52:00
  • 自己用的ASP分页函数

    2009-10-18 11:30:00
  • Dreamweaver制作网页11种技巧详解

    2007-11-05 14:00:00
  • asp之家 网络编程 m.aspxhome.com