I have SearchUser
as input value, and want to process it differently depending on which pattern it matches:
.Pattern = "^\d+$"
.Pattern = "([\w\.-]+)@([\w\.-]+)\.([A-Za-z]{2,6})"
.Pattern
for all other values
How to implement the third case?
My code so far:
Set objRegex = CreateObject("VBScript.RegExp")
With objRegex
.IgnoreCase = True
.Pattern = "^\d+$"
If .test(SearchUser) Then
adoCommand.CommandText = "<LDAP://" & strDomain & ">;(&(objectClass=User)(employeeid=" & SearchUser & ")(memberOf=" & SearchGroup & "));employeeid;subtree"
End If
.Pattern = "([\w\.-]+)@([\w\.-]+)\.([A-Za-z]{2,6})"
If .test(SearchUser) Then
adoCommand.CommandText = "<LDAP://" & strDomain & ">;(&(objectClass=User)(userprincipalname=" & SearchUser & ")(memberOf=" & SearchGroup & "));employeeid;subtree"
End If
End With
As your two first patterns are mutually exclusive (a string cannot match both), you can use an If ... ElseIf ... Else
construct here.
First, I would define this helper function:
Function IsMatch(ByVal Target As String, ByVal Pattern As String)
Set objRegex = CreateObject("VBScript.RegExp")
objRegex.IgnoreCase = True
objRegex.Pattern = Pattern
IsMatch = objRegex.test(Target)
End Function
And then your main logic can be this:
If IsMatch(SearchUser, "^\d+$") Then
adoCommand.CommandText = "<LDAP://" & strDomain & ">;(&(objectClass=User)(employeeid=" & SearchUser & ")(memberOf=" & SearchGroup & "));employeeid;subtree"
ElseIf IsMatch(SearchUser, "([\w\.-]+)@([\w\.-]+)\.([A-Za-z]{2,6})") Then
adoCommand.CommandText = "<LDAP://" & strDomain & ">;(&(objectClass=User)(userprincipalname=" & SearchUser & ")(memberOf=" & SearchGroup & "));employeeid;subtree"
Else
' Whatever you want to happen in the third case
End If