Asp classic 电子邮件验证问题:无效的过程调用或参数:';中期';

Asp classic 电子邮件验证问题:无效的过程调用或参数:';中期';,asp-classic,Asp Classic,我试图用以下代码控制电子邮件地址和审阅者姓名,但我收到了此错误 Microsoft VBScript运行时错误“800a0005” 无效的过程调用或参数:“Mid” 我能否将Mid(审阅者电子邮件,InStr(1,审阅者电子邮件,“@”,1),1)与“@”进行比较 如果Len(审阅者名称)

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

Microsoft VBScript运行时错误“800a0005”

无效的过程调用或参数:“Mid”

我能否将Mid(审阅者电子邮件,InStr(1,审阅者电子邮件,“@”,1),1)与“@”进行比较

如果Len(审阅者名称)<2,则
有回应
.write“错误!请填写有效名称。
” 以 ElseIf Len(审阅者电子邮件)<3 有回应 .write“错误!请填写有效的电子邮件地址。
” 以 ElseIf Mid(审阅者电子邮件,InStr(1,审阅者电子邮件,“@”,1),1)”@”然后 有回应 .write“错误!请填写有效的电子邮件地址。
” 以 其他的 插入。。。 如果结束
您可以将最后一个
ElseIf
简化如下:

ElseIf InStr(REVIEWEREMAIL, "@", vbTextCompare) = 0 Then
因为如前所述,您只需检查提供的电子邮件地址中是否有
@


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

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

“经典的”ASP欺骗是将空变量更改为空字符串,如下所示

REVIEWEREMAIL = REVIEWEREMAIL  & ""
这将返回LEN=0


除此之外,您可能还想在线寻找一个正则表达式来检查有效的电子邮件值。

这基本上是我的问题。我在for循环中调用Mid,该循环从字符串中检索每个字符。我认为Mid调用是基于0的,但它实际上从1开始,因此调用Mid(myStr,0,1)将返回“无效过程调用或参数:'Mid'”错误,而Mid(myStr,1,1)是获取字符串第一个字符的正确调用。
REVIEWEREMAIL = REVIEWEREMAIL  & ""