密码的正则表达式,规则很少

时间:2014-08-10 15:42:51

标签: javascript regex

我想要一个函数checkPassword函数,该函数应检查密码参数是否符合以下规则:

  1. 必须超过6个字符
  2. 允许的字符是小写或大写拉丁字母字符 (a-z),数字(0-9)和特殊字符+,$,#,\,/ only
  3. 一定不能有3个或更多连续数字(例如“pass12p”没问题, 但“pass125p”不是,因为它包含“125”)
  4. 如果密码参数符合上述规则,checkPassword应该向控制台打印“true”,如果不符合,则为“false”。

3 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式并获取捕获组的内容以检查您的字符串是否有效:

.*\d{3}.*|^([\w\+$#/\\]{6,})$

<强> Working demo

使用\w允许A-Za-z0-9_如果您不想在正则表达式中使用下划线,则必须将\w替换为A-Za-z0-9

以下示例:

pass12p            --> Pass
pass125p           --> Won't pass
asdfasf12asdf34    --> Pass
asdfasf12345asdf34 --> Won't pass

匹配信息是:

MATCH 1
1.  `pass12p`
MATCH 2
1.  `asdfasf12asdf34`

答案 1 :(得分:0)

最好的方法是使用两个单独的正则表达式。首先,确保密码与第一个匹配,检查是否符合规则#1和#2:

[A-Za-z0-9#$\/\\\+]{6,}

然后,确保密码匹配第二个正则表达式,该正则表达式检查密码中任何位置是否存在3个连续数字序列:

\d{3}

答案 2 :(得分:-1)

function checkPassword(str) {
  console.log( /^(?!.*\d{3})[+a-z\d$#\\/]{6,}$/i.test(str) );
}