Does VbScript have a native implementation for Regex? I need to validate e-mail addresses on an old ASP application.
Any pointers would be great.
Does VbScript have a native implementation for Regex? I need to validate e-mail addresses on an old ASP application.
Any pointers would be great.
This example is by AlexCuse from 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._%+-]+@[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
VBScript has a built-in RegExp object, which is Microsoft's implementation of JavaScript regular expressions. I have an article about the VBScript RegExp object on my website that explains how to use it.
Since the top answer here is in VB6 I thought I'd add one here in VBScript (since that's what the question is asking for):-
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()
Now some tests:-
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("name@uk") = False
Response.Write EmailValidator.Test("name@uk") = False
Response.Write EmailValidator.Test("[email protected]") = False