2008-12-11 54 views

回答

8

這個例子是AlexCuse從LessThanDot

Function ValidEmail(ByVal emailAddress) 

'this function will use regular expressions to check an ' 
'email address for validity ' 

'instantiate regex object container, output boolean ' 
Dim objRegEx, retVal 

'using late binding, vbscript reference is not required ' 
Set objRegEx = CreateObject("VBScript.RegExp") 

'.pattern -looks for a valid email address ' 
With objRegEx 
     .Pattern = "^\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b$" 
     .IgnoreCase = True 
End With 

retVal = objRegEx.Test(emailAddress) 

'get rid of RegEx object ' 
Set objRegEx = Nothing 

ValidEmail = retVal 

End Function 
+1

這是一個糟糕的匹配模式,但很容易修復。 – FlySwat 2008-12-11 22:51:50

+0

哈哈我很久沒有使用過這段代碼了。但你會介意分享你如何解決匹配模式?我不太經常使用正則表達式,但總是在尋找提示。 – AlexCuse 2008-12-12 01:07:38

0

像其他人說的,是的。我只想把你放在devguru vbscript文檔中,我發現它們往往是獲得快速vbscript答案的好地方。這是Regexp對象的部分。

19

由於上面的答案這裏是VB6我想我會在VBScript中添加一個這裏(因爲那是什麼的問題是要求): -

Option Explicit 

Function GetEmailValidator() 

    Set GetEmailValidator = New RegExp 

    GetEmailValidator.Pattern = "^((?:[A-Z0-9_%+-]+\.?)+)@((?:[A-Z0-9-]+\.)+[A-Z]{2,4})$" 

    GetEmailValidator.IgnoreCase = True 

End Function 

Dim EmailValidator : Set EmailValidator = GetEmailValidator() 

現在一些測試: -

Response.Write EmailValidator.Test("") = False 
Response.Write EmailValidator.Test(" ") = False 
Response.Write EmailValidator.Test("[email protected]") = True 
Response.Write EmailValidator.Test("[email protected]") = True 
Response.Write EmailValidator.Test("[email protected]") = True 
Response.Write EmailValidator.Test("[email protected]") = False 
Response.Write EmailValidator.Test("@oops.co.uk") = False 
Response.Write EmailValidator.Test("name") = False 
Response.Write EmailValidator.Test("[email protected]") = False 
Response.Write EmailValidator.Test("[email protected]") = False 
Response.Write EmailValidator.Test("[email protected]") = False