javascript - 密码强度验证的正则表达式

标签 javascript regex validation passwords

我写了一个可能用于密码强度验证的正则表达式:

^(?:([A-Z])*([a-z])*(\d)*(\W)*){8,12}$

表达式由四组组成:

  1. 零个或多个大写字符
  2. 零个或多个小写字符
  3. 零个或多个小数位
  4. 零个或多个非单词字符(!、£、$、% 等)

我希望它的工作方式是确定有多少组已匹配以确定密码的强度。因此,例如,如果只有一组匹配,它将很弱。如果四个组都匹配,那就强了。

我已经使用 Rubular (a Ruby regular expression editor). 测试了表达式

在这里我可以直观地看到有多少组匹配,但我想在 JavaScript 中执行此操作。我写了一个脚本来返回匹配组的数量,但结果与我在 Rubular 中看到的不一样。

我如何在 JavaScript 中实现这一点?我的正则表达式能胜任这项任务吗?

最佳答案

我认为您必须独立检查每个组。伪代码:

bool[] array = {};
array[0] = pwd.match(/[A-Z]/);
array[1] = pwd.match(/[a-z]/);
array[2] = pwd.match(/\d/);
array[3] = pwd.match(/[!_.-]/);

int sum = 0;
for (int i=0; i<array.length; i++) {
    sum += array[i] ? 1 : 0;
}

switch (sum) {
    case 0: print("weird..."); break;
    case 1: print("weak"); break;
    case 2: print("ok"); break;
    case 3: print("strong"); break;
    case 4: print("awesome"); break;
    default: print("weird..."); break;
}

关于javascript - 密码强度验证的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678619/

相关文章:

javascript - 在搜索框中收到输入之前,如何隐藏列表结果?

javascript - 阻止表单提交

mysql - 字符串的正则表达式

javascript - 在 asp.net 中客户端脚本验证后触发事件?

javascript - 为什么我无法通过 id 获取一件商品?

Javascript [\s\S]* 太贪心了

regex - 像 "regexec"这样的正则表达式函数在 libc 版本 2.2.5 中是线程安全的吗?

ruby-on-rails - 如何验证 has_one 关联是否存在?

validation - ASP.Net MVC2 : ModelState is invalid, 但我不知道为什么

javascript - 携带一行的id到modal