检查字符串是否包含至少10个数字,12个大写字母和20个小写字母

时间:2015-02-10 09:31:15

标签: regex string

正则表达式有至少10个数字,12个大写字母和10个小写字母?

字符串可以从上面的任何一个开始,可以是随机的 放置。例如,AB12jgGGfWisLWfoi34R32SgD42DSf3453jfh

我使用(?=.*\\d.*\\d)(?![.\\n])(?=.*[A-Z].*[A-Z])(?=.*[a-z].*[a-z]).*$这是我用于至少两个大写,两个小写和两个数字的内容。但是在上面的表达式中添加10个冗余的\\d似乎并不是一个好习惯。

此外,使用\\d{10}无法正常工作,就像我们期望连续10位数一样。

1 个答案:

答案 0 :(得分:6)

您可以使用此正则表达式:

^(?=(.*?\d){10})(?=(.*?[A-Z]){12})(?=(.*?[a-z]){10})[a-zA-Z0-9]+$

RegEx Demo

甚至表现更好的正则表达式:

^(?=(?:\D*\d){10})(?=(?:[^A-Z]*[A-Z]){12})(?=(?:[^a-z]*[a-z]){10})[a-zA-Z0-9]+$

这是因为否定模式比懒惰量词.*?效果更好(感谢@nhahtdh)。