-1

我正在尝试使用正则表达式在 VBA 中进行模式匹配。我添加了对正则表达式库的引用,并使用以下代码作为测试。

Sub testing()

Dim re
Dim val
Set re = New RegExp

re.Pattern = "[0-9]{5}"
re.IgnoreCase = True

val = Range("A8").Value

MsgBox val

MsgBox re.Test(val)

End Sub

问题是,当我测试格式化为的字符串时:

1234 565 4444543 12 33

我在使用 {5} 时收到“True”,而在使用 {6} 时收到“False”。为什么是这样?

在这种情况下,{5} 和 {6} 不应该都返回“False”吗?

如果 RegEx 在空格上匹配,我该如何防止这种情况?我想匹配正好 4 个数字,后跟恰好一个空格,后跟正好 3 个数字,等等。

帮助!

4

1 回答 1

-1

您需要锚定正则表达式:

re.Pattern = "^[0-9]{5}$"

否则,如果它在输入中的任何位置找到该模式,它就会匹配。^匹配输入的开头,$匹配输入的结尾。

我不确定为什么会[0-9]{6}返回False您的输入,因为4444543.

于 2013-05-13T23:12:43.077 回答