问题是,我正在尝试创建一个模式,如果字符串中除了模式所检查的内容之外的任何内容,都将返回false。我是使用正则表达式的新手,我相信应该通过将整个模式放在“ ^”和“ $”之间来实现,但这对我的代码不起作用。
Sub Macro1()
Dim cellValue As String
cellValue = "7:11 AM NBR Unavail"
Dim callPattern As String
callPattern = "^[1]{0,1}[1-9][:][0-9]{2}[ ]AM|PM$"
Dim regEx As New RegExp
With regEx
.IgnoreCase = False
.Pattern = callPattern
End With
If regEx.Test(cellValue) Then
MsgBox ("Got it!")
Else
MsgBox ("Don't got it...")
End If
End Sub
如您所见,变量cellValue在模式检查的AM | PM之后有文本,但是当我运行它时,我仍然得到“知道了!”消息,我不确定为什么会这样。我之前在尝试以下字符串和模式,并且最后的“ $”按预期工作,所以为什么不能与上面的代码一起工作?
cellValue = "7:11 PM (555) 444-3333"
callPattern = "^[1]{0,1}[1-9][:][0-9]{2}[ ]AM|PM[ ][(][0-9]{3}[)][ ][0-9]{3}[-][0-9]{4}$"
答案 0 :(得分:2)
我认为您必须在AM | PM之间加上括号,如下所示。
callPattern = "^[1]{0,1}[1-9][:][0-9]{2}[ ](AM|PM)$"
您的模式意味着 “ ^ [1] {0,1} [1-9] [:] [0-9] {2} [] AM”或“ PM $”
第二种方式也意味着 “ ^ [1] {0,1} [1-9] [:] [0-9] {2} [] AM”或“ PM [] [(] [0-9] {3} [)] [ ] [0-9] {3} [-] [0-9] {4} $”
答案 1 :(得分:0)