VbScript中的正则表达式?

VbScript中的正则表达式?

问题描述:

VbScript是否具有Regex的本机实现?我需要验证旧的ASP应用程序的电子邮件地址。VbScript中的正则表达式?

任何指针都会很棒。

这个例子是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

是的,它肯定不会。 Here's Microsoft's documention

像其他人说的,是的。我只想把你放在devguru vbscript文档中,我发现它们往往是获得快速vbscript答案的好地方。这是Regexp对象的部分。

VBScript有一个内置的RegExp对象,它是Microsoft的JavaScript正则表达式的实现。我的网站上有一个article about the VBScript RegExp object,它解释了如何使用它。

由于上面的答案这里是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