检查大写和小写

Ali*_*Ali 5 regex

我一段时间以来一直在搜索与包含 8 到 20 个大写字母和小写字母组合的字符的单词匹配的正则表达式:

这是有效表达式的示例:AaAaAaAaA 或 aaaaaaaaA

无效表达式示例:aaaaaaaaa 或 AAAAAAAA

到目前为止我所做的是: ^[az][AZ]{8,20}$,但正如你所看到的,这不起作用

有人对此有什么想法吗?

此致

Jen*_*enn 7

感谢阿努巴瓦,前瞻是正确的选择。

\b(?=[a-z]+[A-Z]+|[A-Z]+[a-z]+)[a-zA-Z]{8,20}\b
Run Code Online (Sandbox Code Playgroud)

前瞻可确保匹配中至少有一个大写字母和小写字母(无论顺序如何)。这将匹配长度为 8-20 个字符且至少包含 1 个大写字母和至少 1 个小写字母的整个单词。

^(?=[a-z]+[A-Z]+|[A-Z]+[a-z]+)[a-zA-Z]{8,20}$
Run Code Online (Sandbox Code Playgroud)

将锚定到字符串的开头和结尾,因此仅匹配单个单词。

您可以在此处查看它的实际效果http://regex101.com/r/uE5lT4/4

编辑:如果唯一的大写字母是最后一个字母,则第一个版本与单词不匹配。