【问题标题】:How to match a simple number pattern in VBA using RegEx [closed]如何使用 RegEx 匹配 VBA 中的简单数字模式
【发布时间】:2011-06-16 02:50:18
【问题描述】:

如何检查字符串是一位数还是两位数,否则返回false

【问题讨论】:

  • 你可以用 VBA LIKE 来做到这一点:Bool=Digits like "#" or Digits like "##"
  • @charles 你能把它放在答案中吗
  • 任何遇到正则表达式问题的人,我发现这个工具非常有用。 gskinner.com/RegExr
  • 这里是另一个有用的link 对特定于 Excel 的正则表达式,并附有示例。

标签: regex vba


【解决方案1】:

怎么样:

Function OneOrTwo(i As Integer) As Boolean
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.Global = True

objRegEx.Pattern = "^\d{1,2}$"

OneOrTwo = objRegEx.Test(i)
End Function

见:http://msdn.microsoft.com/en-us/library/ms974570.aspx

【讨论】:

  • +1 虽然 IgnoreCaseGlobal 行对于检查数字字符串是多余的。
【解决方案2】:

您也可以使用 VBA LIKE 执行此操作:

Function OneOrTwo(Digits As Variant) As Boolean
    OneOrTwo = Digits Like "#" Or Digits Like "##"
End Function

【讨论】:

  • +1 表示不需要额外的参考。
【解决方案3】:
IF CInt(myNumberString) < 100 Then
    MsgBox "String must be either 1 or 2 digits"
Else
    Msgbox "Failed"
End IF

应该适合你。

【讨论】:

  • 抱歉,注意到您要求使用正则表达式..
【解决方案4】:

Remou 说得对。这是一个 RegexContains 函数,因此您可以将它与各种模式一起使用,而不仅仅是您现在需要的模式。

Function RegexContains(ByVal find_in As String, _
                       ByVal find_what As String, _
                       Optional IgnoreCase As Boolean = False) As Boolean

Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = find_what
RE.IgnoreCase = IgnoreCase
RE.Global = True
RegexContains = RE.Test(find_in)

End Function

按照 Remou 的例子,假设单元格是 A1,你会写:

=RegexContains(A1, "^\d{1,2}$")

【讨论】:

    【解决方案5】:

    这是我会尝试的。 /d 代表数字,?用于选项 2 位。

    /d/d?

    /d{1,2}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2011-04-08
      • 2023-03-24
      • 2015-03-16
      相关资源
      最近更新 更多