|
请教各位老师,问题请见下列3段代码中红色字体。
Sub t1()
'例:验证密码,条件是4-8位,必须包含一个数字
Dim regex As New RegExp
Dim sr, mat, m
sr = "Asa8aAa"
With regex
.Global = True '结果是Asa8aAa。问题:预搜索的结果不应参与计算吧?为什么Asa8还是在结果中?
.Pattern = "(?=.*\d).{4,8}$"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
Sub t2()
'例:验证密码,条件是4-8位,必须包含一个数字
Dim regex As New RegExp
Dim sr, mat, m
sr = "Asa8aAa"
With regex
.Global = False '结果还是Asa8aAa。问题:已经设定Global = False,为什么不是取4位8aAa?
.Pattern = "(?=.*\d).{4,8}$"
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
Sub t3()
'例:验证密码,条件是5-7位,必须包含一个数字
Dim regex As New RegExp
Dim sr, mat, m
sr = "8Asa8aAa"
With regex
.Global = True
.Pattern = "(?=\d.*).{5,7}$" '没有匹配结果。问题:参照t1的结果,好像应该出结果Asa8aAa。t1预搜索以\d结尾,但最终结果并不是数字结 尾;本例预搜索以\d开始,好像又要求5-7位长度的开头必须是数字?实在没看懂。
Set mat = .Execute(sr)
For Each m In mat
Debug.Print m
Next m
End With
End Sub
|
|