gpt4 book ai didi

excel - 字符串验证

转载 作者:行者123 更新时间:2023-12-04 21:25:49 24 4
gpt4 key购买 nike

我有需要验证的字符串,例如

'AB01MCD10werdfGhjklOP01DEF03124'

它以 AB 开头, 后跟一个两个字符的数字,它告诉我们 'AB' 后面有多少个字符(在这种情况下是 01 ,只有 1 个字符是 M)。后面应该跟 CD ,再次以相同的行为,然后是 OP ,这是可选的,即 OP组可能存在也可能不存在。最后它应该以 EF 结尾。克
  • 字符串以 'AB' 开头,必填
  • 紧随其后的是“CD”再次强制
  • 后面是可选的“OP”
  • 后跟“EF”,必填

  • 我想验证 A1 中的字符串并将验证结果放在 B1 中。

    如果验证成功,B1 应该有 Validation Success,否则 Error:Expected 'CD', but found 'blah.

    请让我知道最好的方法 - 是使用公式还是宏?

    最佳答案

    这个RegExp验证一个字符串:

  • 以 AB 开头,然后是一个 2 位数字,用于设置后面的字母字符数
  • 后跟 CD,然后是一个 2 位数字,用于设置要跟随的字母字符数
  • 可选的 OP,如果存在,它还有 2 位数字,用于设置要跟随的字母字符数
  • 后跟 EF,然后是一个 2 位数字,用于设置要跟随的数字字符数

  • 如果这是您想要的字符串,那么我将调整 Len部分来标记测试中断的位置(即错误:预期的“CD”)。虽然我注意到 字符串 最多可能有 4 个潜在问题而不是您示例中的单一问题)。

    如果您对任何字符(来自 Chris 的代码将接受)而不是您给出的字母和数字示例感到满意,那么 RegExp可以简化。
    Sub Test()
    Debug.Print Validator("AB01MCD10werdfGhjklOP01DEF03124") ' TRUE with optionalOP
    Debug.Print Validator("AB01MCD10werdfGhjklEF03124") ' TRUE without optional OP
    Debug.Print Validator("AB01MCD10weardfGhjklOP01DEF03124") ' fail as CD string is too long
    End Sub

    Function Validator(strIn As String) As Boolean
    Dim objRegex As Object
    Dim objRegexM As Object
    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
    .Pattern = "AB(\d{2})([a-z]+)CD(\d{2})([a-z]+)((?=OP)OP(\d{2})([a-z]+)){0,1}EF(\d{2})(\d+)"
    .ignoreCase = True
    If .Test(strIn) Then
    Set objRegexM = .Execute(strIn)
    With objRegexM(0)
    Validator = Len(.submatches(1)) = CLng(.submatches(0)) And Len(.submatches(3)) = CLng(.submatches(2)) And Len(.submatches(6)) = CLng(.submatches(5)) And Len(.submatches(8)) = CLng(.submatches(7))
    End With
    End If
    End With
    End Function

    关于excel - 字符串验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007912/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com