2

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

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

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

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

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

有谁能够帮助我?

4

2 回答 2

3

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

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

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

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

于 2012-08-28T08:25:51.780 回答
0

这应该给你你所追求的:

^((?=(.*[\d0-9\@\&#\$\?\%!\|(){}[\]]){2,})(?=(.*[a-zA-Z]){2,}).{8,})$
于 2012-08-28T08:34:05.157 回答