分析字母数字字符串的格式

reg*_*lus 2 regex vba

我正在尝试编写一个接受字符串的函数,解析它,并返回另一个字符串,该字符串汇总了原始字符串中连续的字母或数字字符的数量.

例如,字符串999aa45bbx将返回3N2A2N3A,即

  • 3个数字,
  • 然后是2 alpha,
  • 按2个数字,
  • 由3 alpha.

我正在使用该功能来分析保险单ID号的格式.到目前为止,我发现在线解决方案提取字母或数字字符,但没有描述原始字符串中存在这些字符的格式或顺序.

有人可以帮忙吗?

bre*_*tdj 8

像这样的正则表达式将完成这项工作

  • 一起去VBE
  • 插入模块
  • 复制并粘贴下面的代码
  • 同时按返回Excel

那么您可以在Excel中使用该函数(也检测无效字符串),即在B1中
=AlphaNumeric(A1)

在此输入图像描述

Function AlphaNumeric(strIn As String) As String
    Dim objRegex As Object
    Dim objRegMC As Object
    Dim objRegM As Object
    Dim strOut As String
    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Global = True
        .ignorecase = True
        .Pattern = "[^\w]"
        If .test(strIn) Then
            AlphaNumeric = "One or more characters is invalid"
        Else
            .Pattern = "(\d+|[a-z]+)"
            Set objRegMC = .Execute(strIn)
            For Each objRegM In objRegMC
                strOut = strOut & (objRegM.Length & IIf(IsNumeric(objRegM), "N", "A"))
            Next
            AlphaNumeric = strOut
        End If
    End With
End Function
Run Code Online (Sandbox Code Playgroud)