正则表达式有至少10个数字,12个大写字母和10个小写字母?
字符串可以从上面的任何一个开始,可以是随机的
放置。例如,AB12jgGGfWisLWfoi34R32SgD42DSf3453jfh
。
我使用(?=.*\\d.*\\d)(?![.\\n])(?=.*[A-Z].*[A-Z])(?=.*[a-z].*[a-z]).*$
这是我用于至少两个大写,两个小写和两个数字的内容。但是在上面的表达式中添加10个冗余的\\d
似乎并不是一个好习惯。
此外,使用\\d{10}
无法正常工作,就像我们期望连续10位数一样。
答案 0 :(得分:6)
您可以使用此正则表达式:
^(?=(.*?\d){10})(?=(.*?[A-Z]){12})(?=(.*?[a-z]){10})[a-zA-Z0-9]+$
甚至表现更好的正则表达式:
^(?=(?:\D*\d){10})(?=(?:[^A-Z]*[A-Z]){12})(?=(?:[^a-z]*[a-z]){10})[a-zA-Z0-9]+$
这是因为否定模式比懒惰量词.*?
效果更好(感谢@nhahtdh)。