2010-03-13 107 views
2

我試圖通過以下代碼控制電子郵件地址和審閱者姓名,但我收到此錯誤消息。電子郵件驗證問題:無效的過程調用或參數:'Mid'

Microsoft VBScript運行時錯誤 '800a0005'

無效的過程調用或參數: '中秋節'

廣東話我比較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 

回答

1

可以簡化,去年ElseIf這樣的:

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

因爲隨着寫的,你只檢查是否有在所提供的電子郵件地址@

如果您擔心進一步驗證您獲得的電子郵件地址,有很多關於使用正則表達式來驗證電子郵件地址的書面材料。例如:http://www.codetoad.com/asp_email_reg_exp.asp

1

可能的原因是REVIEWEREMAIL爲空 - 在這種情況下,您的第一個IF條件不會按預期捕獲它。一個空的LEN()不返回整數0

「經典」的ASP騙取那就是你的空變量的東西變成一個空字符串像

REVIEWEREMAIL = REVIEWEREMAIL & "" 

,這將給回LEN = 0

除此之外,您可能需要在線查找正則表達式,以檢查有效的電子郵件值。

+0

這基本上是我的問題。我在for循環中調用了Mid,它從字符串中檢索每個字符。我認爲Mid調用是基於0的,但實際上從1開始,所以調用mid(myStr,0,1)將返回「Invalid procedure call or argument:'Mid'」error,而mid(myStr,1,1)是正確調用以獲取字符串的第一個字符。 – 2010-03-25 15:31:37