我需要挑选出包含至少6个字母和/或数字的完整单词(组合,而不是每个),可选的“特殊”字符。所有的顺序都可以,所以A12345,12345A,1-2-345-A,12A45B等等。这是VBA,因此无法访问后面的内容。特殊字符只会出现在匹配中,而不是开始或结束(例如,永远不会是-1234-A-)。
A12345
12345A
1-2-345-A
12A45B
-1234-A-
0sgqnhkj1#
我想这就是你要找的:
[a-z0-9/-]{6,}
这将匹配任何顺序a to z或0 to 9或-或/至少为6。注意-位于字符类的末尾。你可以把它放在中间,但你必须摆脱它。此外,如果分隔符也是/,则需要转义/
a to z
0 to 9
-
/
更新
正如Wiktor所指出的,这也会捕获------,这可能不是你想要的。我建议简单地清除所有可选字符,然后运行上面的正则表达式。我会删除我的答案,因为我没有提供确切的问题,但这将是一个可行的解决方案,所以它可能有价值。
------
rvpgvaaj2#
你可以执行正则表达式替换来删除所有非字母/数字,然后检查结果字符串的长度是否大于或等于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
∮ ∮ ∮ ∮
2条答案
按热度按时间0sgqnhkj1#
我想这就是你要找的:
这将匹配任何顺序
a to z
或0 to 9
或-
或/
至少为6。注意-
位于字符类的末尾。你可以把它放在中间,但你必须摆脱它。此外,如果分隔符也是/
,则需要转义/
更新
正如Wiktor所指出的,这也会捕获
------
,这可能不是你想要的。我建议简单地清除所有可选字符,然后运行上面的正则表达式。我会删除我的答案,因为我没有提供确切的问题,但这将是一个可行的解决方案,所以它可能有价值。rvpgvaaj2#
你可以执行正则表达式替换来删除所有非字母/数字,然后检查结果字符串的长度是否大于或等于6:
∮ ∮ ∮ ∮