密码至少2位,小写,大写的正则表达式

时间:2014-07-15 07:37:01

标签: regex passwords

需要Regular Expression密码才能拥有:

  • 最少8个字符
  • 必须至少包含以下两项内容
    • 小写字母
    • 大写字母
    • 数字和
    • 符号
  • 字符数限制为50

3 个答案:

答案 0 :(得分:2)

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

^(?=.{8,50}$)(?=(.*?[a-z].*?[A-Z])|(.*?[a-z].*?[0-9])|(.*?[a-z].*?[!@#$%^&*()_+])|(.*?[A-Z].*?[0-9])|(.*?[A-Z].*?[!@#$%^&*()_+])|(.*?[0-9].*?[!@#$%^&*()_+])).*$

Regular expression visualization

Debuggex Demo

我尝试过的是:

的组合
Lowercase - Uppercase   (.*?[a-z].*?[A-Z])            // Valid Entry
Lowercase - Number      (.*?[a-z].*?[0-9])            // Valid Entry
Lowercase - Symbol      (.*?[a-z].*?[!@#$%^&*()_+])   // Valid Entry

Uppercase-Number        (.*?[A-Z].*?[0-9])            // Valid Entry
Uppercase-Symbol        (.*?[A-Z].*?[!@#$%^&*()_+])   // Valid Entry

Number-Symbol           (.*?[0-9].*?[!@#$%^&*()_+])   // Valid Entry

有关jsBin的更多内容,您可以查看 JsBin Demo

您还可以查看@areschen answer,JsBin的灵感来自他的小提琴。

供参考:

Regex : Atleast 2 digits and 1 special char. Regex : I want this & that - As pointed by @Barmar

答案 1 :(得分:1)

谢谢大家的时间。 多次尝试后,以下模式适用于我:

注意: 在表达式检查" 2每个" (大写,小写,0-9)

^(?=.{8,50}$)(?=(.*[A-Z]){2})(?=(.*[a-z]){2})(?=(.*[0-9]){2})(?=\\S+$).*$

否则,

^(?=(?:\\D*\\d){2})(?=(?:[^a-z]*[a-z]){2})(?=(?:[^A-Z]*[A-Z]){2})(?=\\S+$).{8,50}$

并且,在检查"任何2" of(大写,小写,0-9,定义的特殊符号集)

^(?=.{8,50}$)(?=([A-Z,a-z,0-9,[!,~,*,$]]+){2})(\\S+$)$

说明

(?=.{8,50}$)(?=将条件与后面的其余条件进行对比),此条件检查输入的长度为8到50

(?=(.*[A-Z]){2})(其中,。*任何字符0次或更多次,后跟大写字母)和{2},表示条件应该应用两次,因此大写字母存在2次

(?=(.*[a-z]){2})(其中,。*表示任意字符0次或更多次,后跟LOWERCASE字母)和{2},表示条件应该应用两次,因此LOWERCASE字母存在2次

(?=(.*[0-9]){2})(其中,。*表示任意字符0次或更多次,后跟DIGIT)和{2},表示条件应该应用两次,因此DIGIT存在2次

(?=\\S+$)(其中,\ S表示非空格,+表示0或更多次,因此它会检查所有字符是否都是非空格字符。因此,如果有空格,则此条件将失败。

注意:" \"我用于java转义字符.*这是最后一个条件,这意味着我上次检查后的任何其他字符(例如我的情况下的数字,所以不是必须的,最后一个字符应该是数字。

注意:如果只有1个或最后一个条件,我们不会使用?=来AND。

在java中,我尝试了这个小程序:

String input = "Dv1D v1bb";

String pattern = "^(?=.{8,50}$)(?=(.*[A-Z]){2})(?=(.*[a-z]){2})(?=(.*[0-9]){2})(?=\\S+$).*$";

System.out.println(Pattern.matches(pattern, input));

答案 2 :(得分:0)

此正则表达式也适用于Unicode字符。

^(?=.{8,50}$)(?=(.*?[\\p{Ll}].*?[\\p{Lu}])|(.*?[\\p{Ll}].*?[\\p{Nd}])|(.*?[\\p{Ll}].*?[!@#$%^&*+=?])|(.*?[\\p{Lu}].*?[\\p{Nd}])|(.*?[\\p{Lu}].*?[!@#$%^&*+=?])|(.*?[\\p{Nd}].*?[!@#$%^&*+=?])).*$