我正在尝试编写密码验证程序。

如何查看我提供的字符串中是否至少包含3个不同的字符组?

检查它们是否存在很容易---但至少3个?

  • 至少八(8)个字符
  • 至少三个不同的字符组

    大写字母

    小写字母

    数字

    特殊字符!@#$%&/ =?_。,:;-\

  • (我使用javascript进行正则表达式)

    最佳答案



    这将使其很难阅读(并因此进行维护!)解决方案,但是这里是:

    (?mx)
    ^
    (
      (?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])                # must contain a-z, A-Z and 0-9
      |                                                # OR
      (?=.*[a-z])(?=.*[A-Z])(?=.*[!@\#$%&/=?_.,:;\\-]) # must contain a-z, A-Z and special
      |                                                # OR
      (?=.*[a-z])(?=.*[0-9])(?=.*[!@\#$%&/=?_.,:;\\-]) # must contain a-z, 0-9 and special
      |                                                # OR
      (?=.*[A-Z])(?=.*[0-9])(?=.*[!@\#$%&/=?_.,:;\\-]) # must contain A-Z, 0-9 and special
    )
    .{8,}                                              # at least 8 chars
    $
    

    一个(可怕的)JavaScript演示:
    var pw = "aa$aa1aa";
    if(pw.match(/^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&\/=?_.,:;\\-])|(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%&\/=?_.,:;\\-])|(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%&\/=?_.,:;\\-])).{8,}$/)) {
      print('Okay!');
    } else {
      print('Fail...');
    }
    

    打印:Okay!,如您在Ideone上看到的。

    10-04 22:18
    查看更多