密码与正则

通常我们需要校验验证用户输入的密码是否符合强度要求。

密码字符包括以下几种:

\n 小写英文字符 [a\nz] \n 大写英文字符 [A\nZ] \n 阿拉伯数字 [0\n9] \n 部分特殊字符 [&#96;~!@#\n%^&\n()\n\\n+=|\\\[\]{}:;'"<>,.\/?], 简化为 [ \n\/:\n@\[\n&#96;{\n~]

注,md 的限制,上面特殊字符中 ` 使用 &#96; 代替。

目前常见的密码强度包括以下几种

\n 普通强度:必须同时包含 2种字符。 \n 高强度:必须同时包含 3种字符。 \n 极高强度:必须同时包含 4种密码字符。

通常情况下,我们可能会基于种种考虑采用字符串方法计算密码强度,或校验密码合法性, 下面我们更多的考虑使用正则表达式来解决这个问题。

1var normal = /^(?![0\n9]+\n)(?![a\nzA\nZ]+\n)(?![ \n\/:\n@\[\n`{\n~]+\n)[0\n9A\nZa\nz \n\/:\n@\[\n`{\n~]{6,20}\n/;
2
3var high = /^(?![0\n9a\nzA\nZ]+\n)(?![a\nzA\nZ#\n@\\n\\n]+\n)(?![0\n9#\n@\\n\\n]+\n)[0\n9A\nZa\nz#\n@\\n\\n]{6,20}\n/;
4
5var highest = "1aa1".replace(/^(?:([a\nz])|([A\nZ])|([0\n9])|(.)){6,}|(.)+\n/, "\n1\n2\n3\n4\n5")