VBAdynamic正则expression式模式“如果”

我正在研究一种工具来从文本中提取多种forms的参考数字,而我正在努力想出一种巧妙的方法来迭代不同的RegEx模式。 我后来的例子是类似于(我用大括号括起来的伪代码):

Dim regEx as New RegExp Dim someinput as String regEx.Pattern = "201[67]\W?\d{6}" If regEx.Test(someinput) = True Then foo Elseif {with regEx.pattern="AB\W?\d{10}" regEx.Test(someinput)} Then bar ... 

这将会有几个层面的深度,因为我们已经有十几种可能的格式可供检查。 我现在所能想到的是为每一个定义一个新的regEx项目,为每个项目设置模式,然后依次运行If-> ElseIfs,但是一定有更好的方法…我希望!

非常感谢

编辑只是为了抢先,foo和bar会根据input而有所不同,所以我不能仅仅制作(例如)一组可能的模式,并通过检查每个模式来运行,然后返回最终的“真/假”

就我个人而言,我会做一个循环:

 Dim regEx As New RegExp Dim someinput As String Dim patterns Dim i As Long Dim match As Long patterns = Array("201[67]\W?\d{6}", _ "AB\W?\d{10}") match = -1 For i = LBound(patterns) To UBound(patterns) regEx.Pattern = patterns(i) If regEx.Test(someinput) Then match = i - LBound(patterns) ' subtract the lower bound to force zero-base Exit For End If Next Select Case match Case 0: foo Case 1: bar Case Else: MsgBox "No match found" End Select