我需要挑选出至少包含6个字母和/或数字(组合,而不是每个(的整个单词,以及可选的"特殊"字符。所有顺序,如A12345
,12345A
,1-2-345-A
,12A45B
等等。
这是 VBA,因此无法访问后面。特殊字符将永远"在"匹配项中,而不是开始或结束(例如,永远不会-1234-A-
(。
我认为这就是您要查找的:
[a-z0-9/-]{6,}
这将以任何顺序匹配a to z
或0 to 9
或至少 6-
或/
。 请注意,-
位于字符类的末尾。 你可以把它放在中间,但随后需要逃避它。 此外,如果您的分隔符也/
,则需要对/
进行转义
更新
正如Wiktor所指出的,这也将捕获可能不是您想要的------
。 我建议简单地清除所有可选字符,然后运行上面的正则表达式。 我会删除我的答案,因为我没有提供确切的要求,但这将是一个可行的解决方案,因此它可能有价值。
您可以执行正则表达式替换以删除所有非字母/数字,然后检查结果字符串的长度是否为 6 或更多:
Dim input As String = "A-1234-B"
Dim pattern As String = "[^A-Za-z0-9]+"
Dim replacement As String = ""
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement)
Console.WriteLine(result.Length) ' 6