【问题标题】:Regex pattern for a password密码的正则表达式模式
【发布时间】:2012-08-22 17:25:51
【问题描述】:

我需要一个验证密码格式的正则表达式模式。 规则是:

  • 总共至少 8 个字符
  • 至少两个字母
  • 至少两个数字或符号

我想出了以下几点: /((?=.*[0-9\@\&#\$\?\%!\|(){}[]])(?=.*[a-zA-Z]).{8,})/

它会查看两者是否都发生一次,但我需要它来验证它们是否至少发生两次。 如果我像这样添加{2,}/((?=.*[0-9\@\&#\$\?\%!\|(){}[]]{2,})(?=.*[a-zA-Z]{2,}).{8,})/

然后以下不起作用例如:a1a1a1a1a1

谁能帮帮我?

【问题讨论】:

    标签: regex validation passwords


    【解决方案1】:

    这就是你的做法,使用积极的前瞻:http://regex101.com/r/uW0yI4

    /^(?=.*[a-z].*[a-z])(?=.*[!"#...\d].*[!"#...\d]).{8,}$/gmi

    只需将!"#... 替换为您要匹配的所有符号即可。

    注意:您的应用程序可能不需要多行标志。

    【讨论】:

    • 这行得通,只有一个小注释,它也会接受像 ~ 这样的不允许的字符。我怎样才能阻止它?
    • . 点更改为包含您要允许的字符类。例如:/^(?=.*[a-z].*[a-z])(?=.*[!"#...\d].*[!"#...\d])[a-z\d]{8,}$/gmi
    【解决方案2】:

    这应该会给你你所追求的:

    ^((?=(.*[\d0-9\@\&#\$\?\%!\|(){}[\]]){2,})(?=(.*[a-zA-Z]){2,}).{8,})$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2010-11-18
      • 1970-01-01
      相关资源
      最近更新 更多