正则表达式密码强度不起作用

时间:2014-03-25 16:25:43

标签: javascript regex

我需要在创建新用户帐户时显示密码强度,因此我有以下条件

  • 少于8个字符 - &gt; <太短
  • 仅限8到15个字符的字母(上部和下部)或仅限数字 - &gt;弱
  • 8到15个字符的字母(上部和下部)和至少一个数字 - &gt;中等
  • 8到15个字符的字母(上部和下部)和至少一个数字和至少一个特殊字符 - &gt;

我正在尝试使用我的javascript中的以下正则表达式

/^.{1,7}$/, //Too Short
/^([a-zA-Z]{8,15})$/, //Weak
/^(?=.*\d)(?=.*[a-zA-Z]).{8,15}$/, //Moderate
/^([a-zA-Z0-9@\!_#\$\^%&*()+=\-[]\\\';,\.\/\{\}\|\":<>\? ]{8,15})$/] //Strong

但他们没有工作。请帮助我使用上面的正则表达式。

3 个答案:

答案 0 :(得分:3)

如果您为每个“规则”创建一个正则表达式,

可能更容易推理并向用户提供反馈。

var rules = [
    [/[a-z]/,     'must include lower case letter'],
    [/[A-Z]/,     'must include upper case letter'],
    [/\d/,        'must include number'],
    [/[^\w\d]/,   'must include punctuation character'],
    [/^.{8,15}$/, 'must be 8 to 15 digits'],
    [/(.)\1+/,    'characters cannot be repeated'] ];

答案 1 :(得分:0)

你的照片有一些问题。你似乎试图测试一周,然后测试一个强密码。但是,您的模式使用的是字符类。这意味着任何提供的字符都可以使用。理想情况下,“强”密码可能是“aaaaaaaa”,因为它至少有8个字符长,适合您角色类的a-z部分。您还有语法错误。您的序列结束]{8,15})$/],看起来您的意思是]{8,15})$/。另一个语法错误是您在字符类中没有转义[]。他们需要\[\]

最后,我建议阅读“Character Escapes”。它将显着简化您的模式。例如,您可以在角色类中将a-zA-Z0-9_换成\w(字符)。

答案 2 :(得分:0)

你必须通过一系列检查来运行它:

^.{1,7}$太短了

^[a-zA-Z]{8,15}$^\d{8,15}$

^[a-zA-Z\d]{8,15}$中等

^[a-zA-Z\d\W]{8,15}$强大