带有字母,数字和任意特殊字符(任意顺序)的正则表达式单词

时间:2018-07-09 13:58:04

标签: regex vba

一段时间以来,我一直在这里使用一些帮助,但是找不到符合我要求的任何东西。我需要挑选出至少包含6个字母和/或数字(组合在一起,而不是每个字母)以及可选的“特殊”字符的整个单词。全部以任何顺序排列,因此A1234512345A1-2-345-A12A45B等。

我做了一个小提琴here。我快到了(但可以做得更好)-我无法弄清楚为什么至少要有6个数字才能匹配。是否因为*

中的字母都是可选的

这是VBA,因此无法访问。特殊字符将永远只在匹配中,而不是开始或结束(例如,永远不会为-1234-A-)。

2 个答案:

答案 0 :(得分:1)

我认为这就是您想要的:

[a-z0-9/-]{6,}

它将以至少6的任何顺序匹配a to z0 to 9-/。请注意-位于结尾处角色类。您可以将其放在中间,但是需要对其进行转义。另外,如果您的定界符也为/

,则需要转义/

更新

正如Wiktor指出的那样,这还将捕获------,这可能不是您想要的。我建议您先清除所有可选字符,然后运行上述正则表达式。由于我没有提供确切的要求,因此我将删除答案,但这将是一个可行的解决方案,因此可能有价值。

答案 1 :(得分:1)

您可以进行正则表达式替换以删除所有非字母/数字,然后检查结果字符串的长度是否为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

Demo