Visual Basic Excel正则表达式{}

时间:2015-08-07 09:30:28

标签: regex excel vba

{}我遇到了一些麻烦。当我得到这样的最大值{1,8}时它不起作用,我现在不知道为什么。最小值很有效

Private Sub Highlvl_Expression()
Dim strPattern As String: strPattern = "[a-zA-Z0-9_]{1,8}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim Test As Boolean
With regEx
     .Global = True
     .MultiLine = True
     .IgnoreCase = False
     .Pattern = strPattern
End With
Test = regEx.Test(Highlvl.Value)
If regEx.Test(Highlvl.Value) Then
    MsgBox ("Validate")
Else
    MsgBox ("Not Validate")
End If
End Sub

1 个答案:

答案 0 :(得分:1)

您指定了在字符串中查找1到8个字母数字字符的模式。如果您针对9个字符的字符串"ABCDE6789"regEx.Execute("ABCDE6789"))运行正则表达式,则您将有2个匹配项:ABCDE6789

如果要验证应具有最小或最大字符数的字符串,则需要使用anchors,即字符串断言的开始和结束^$ 。所以,使用

Dim strPattern As String: strPattern = "^[a-zA-Z0-9_]{1,8}$"

.Global = False

全局标志不是必需的,因为我们不是在寻找多个匹配项,而是查找test的单个真或假结果。