电子邮件验证问题:无效的过程调用或参数:'Mid'

时间:2010-03-13 20:38:39

标签: asp-classic

我尝试使用以下代码控制电子邮件地址和审阅者姓名,但我收到了此错误。

Microsoft VBScript运行时错误“800a0005”

无效的程序调用或参数:'Mid'

我不能将Mid(REVIEWEREMAIL,InStr(1,REVIEWEREMAIL,“@”,1),1)与“@”进行比较吗?

  If Len(REVIEWERNAME) < 2 Then
   with response
    .write "Error! Please fill in valid name. <br />"
   end with
  ElseIf Len(REVIEWEREMAIL) < 3 Then
   with response
    .write "Error! Please fill in valid email address. <br />"
   end with
  ElseIf Mid(REVIEWEREMAIL, InStr(1, REVIEWEREMAIL, "@", 1), 1) <> "@" Then
   with response
    .write "Error! Please fill in valid email address. <br />"
   end with
  Else

               insert...

End If

2 个答案:

答案 0 :(得分:1)

您可以像上面那样简化上一个ElseIf

ElseIf InStr(REVIEWEREMAIL, "@", vbTextCompare) = 0 Then

因为如上所述,您只是在检查所提供的电子邮件地址中是否有@

如果您担心进一步验证所获得的电子邮件地址,那么有很多关于使用正则表达式来验证电子邮件地址的文章。一个例子:http://www.codetoad.com/asp_email_reg_exp.asp

答案 1 :(得分:1)

可能的原因是REVIEWEREMAIL为空 - 在这种情况下,您的第一个IF条件不会按预期捕获它。 null的Len()不返回整数0。

“经典”ASP作弊是将您的null变量更改为类似

的空字符串
REVIEWEREMAIL = REVIEWEREMAIL  & ""

将返回LEN = 0

除此之外,您可能希望在线查找正则表达式,以检查有效的电子邮件值。