VBA正则匹配:如何实现第三种(其他值)匹配分支?
实现第三种匹配情况的解决方案
要处理第三种“匹配所有其他值”的情况,核心逻辑是在前两种正则匹配都不成立时执行对应处理,可以通过嵌套的If-Else结构实现,以下是修改后的完整代码:
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" Else .Pattern = "([\w\.-]+)@([\w\.-]+)\.([A-Za-z]{2,6})" If .test(SearchUser) Then adoCommand.CommandText = "<LDAP://" & strDomain & ">;(&(objectClass=User)(userprincipalname=" & SearchUser & ")(memberOf=" & SearchGroup & "));employeeid;subtree" Else ' 第三种情况:既非纯数字也非邮箱格式,执行自定义逻辑 adoCommand.CommandText = "<LDAP://" & strDomain & ">;(&(objectClass=User)(samaccountname=" & SearchUser & ")(memberOf=" & SearchGroup & "));employeeid;subtree" ' 可根据实际需求替换LDAP查询字段 End If End If End With
关键说明
- 采用
If-Else嵌套结构,确保只有当前两种匹配都失败时,才触发第三种情况的逻辑。 - 第三种情况通常用于匹配普通用户名(示例中用
samaccountname字段),可根据业务需求调整LDAP查询语句。 - 复用同一个正则对象,避免重复创建实例,提升代码执行效率。
内容的提问来源于stack exchange,提问作者alyam
相关产品推荐
相关产品推荐

