Vbscript 电子邮件验证服务器端

Vbscript 电子邮件验证服务器端,vbscript,asp-classic,Vbscript,Asp Classic,我正在尝试验证电子邮件,但我的代码不允许出现一些情况 代码 pvm=“bw。stack@domain.com“不行 pvm=”user@gmail.com“-工作 如果Len(pvm)

我正在尝试验证电子邮件,但我的代码不允许出现一些情况

代码

pvm=“bw。stack@domain.com“不行
pvm=”user@gmail.com“-工作
如果Len(pvm)<5或Instr(1,pvm,“”)=0或Instr(1,pvm,“@”,1)小于2或InStrRev(pvm,“.”)小于Instr(1,pvm,“@”,1),则
blnEmailOKREG=错误
其他的
blnEmailOKREG=真
如果结束

这是一个相当好的电子邮件地址有效性设置。但请注意,很难获得完全“全知”的验证

' Function IsValidEmail
' Method checks if a string value is a valid email adress
' @Param val: <string> String containing email adress.
' @RETURN: True / False
Public function IsValidEmail(ByRef val)
    IsValidEmail = RegExTest(val,"^[_a-zA-Z0-9-""'\/]+(\.[_a-zA-Z0-9-""'\/]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$")
end function

看起来它不允许用户部分使用
+
字符(这是常见的),并且每次有人提出一个长度超过3个字符的新TLD时都需要更新。好的电子邮件地址验证是困难的,但目标是错误的通过,而不是拒绝真实的电子邮件地址。@Quentin。是的,你说得对。我做了一些研究,要用IPv6验证电子邮件地址,转义字符、域别名等会导致我所在的整个地区停电。所以我放弃了这一点,只选择了最常见的验证,再加上电子邮件验证(发送电子邮件并检查回复)。由于我们的web应用程序中的用户数量有限,我们可以手动处理任何验证错误。谢谢,我刚刚完全删除了它,因为它对某些地址来说是一个麻烦。
' Function IsValidEmail
' Method checks if a string value is a valid email adress
' @Param val: <string> String containing email adress.
' @RETURN: True / False
Public function IsValidEmail(ByRef val)
    IsValidEmail = RegExTest(val,"^[_a-zA-Z0-9-""'\/]+(\.[_a-zA-Z0-9-""'\/]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$")
end function
Public function RegexTest(str, pattern)
    dim m_objRegex 

    set m_objRegex = New RegExp
    m_objRegex.Pattern = pattern
    m_objRegex.Global = True
    RegExTest = m_objRegex.Test(str)

    set m_objRegex = nothing 
End function