我暂时搜索正则表达式,该正则表达式匹配包含8到20个字符的单词组合大写字母和小写字词:
这里有一个有效表达的例子:AaAaAaAaA或aaaaaaaaA
非有效表达式示例:aaaaaaaaa或AAAAAAAA
我到目前为止所做的是:^ [a-z] [A-Z] {8,20} $,但正如你所看到的,那不起作用
有人对此有所了解吗?
祝你好运
答案 0 :(得分:3)
您的角色类需要同时包含a-z
和A-Z
范围。正则表达式应该是:
^[a-zA-Z]{8,20}$
你的正则表达式:
^[a-z][A-Z]{8,20}$
实际上是检查小写字符,后跟8到20个大写字母。
更新:以确保您匹配至少一个较低和一个大写字母使用前瞻性正则表达式如下:
^(?=[A-Z]*[a-z])(?=[a-z]*[A-Z])[a-zA-Z]{8,20}$
答案 1 :(得分:1)
归功于anubhava,前瞻是要走的路。
\b(?=[a-z]+[A-Z]+|[A-Z]+[a-z]+)[a-zA-Z]{8,20}\b
前瞻确保匹配中的任何顺序中至少有一个大写和小写字母。这将匹配8-20个字符长的整个单词,并包含至少1个大写字母和至少1个小写字母。
^(?=[a-z]+[A-Z]+|[A-Z]+[a-z]+)[a-zA-Z]{8,20}$
将锚定到字符串的开头和结尾,因此只匹配一个单词。
您可以在此处查看http://regex101.com/r/uE5lT4/4
编辑:如果唯一的首都是最后一个字母,则第一个版本与单词不匹配。