Регулярное выражение не работает должным образом в VBA - PullRequest
0 голосов
/ 20 декабря 2018

Проблема в том, что я пытаюсь создать шаблон, который будет возвращать 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, который проверяет шаблон, но когда я его запускаю, я все равно получаю «Got it!»сообщение, и я не уверен, почему это так.Ранее я экспериментировал со следующей строкой и шаблоном, а «$» в конце работал точно так, как предполагалось, так почему же он не работает с приведенным выше кодом?

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}$"

1 Ответ

0 голосов
/ 20 декабря 2018

Я думаю, вы должны заключить круглые скобки между 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} $ "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...