用于测试密码强度的正则表达式

Posted

技术标签:

【中文标题】用于测试密码强度的正则表达式【英文标题】:Regex expression to test strength of a password 【发布时间】:2018-08-17 10:10:56 【问题描述】:

我想要一个仅当字符串包含至少 10 到 16 个字符且至少包含一个数字、一个字符串、一个大写、一个小写字符和一个特殊字符时才应该匹配的正则表达式。

我认为这个字符串应该通过这个正则表达式测试但是 这不起作用 : 字符串不包括撇号或引号。 字符串:'asdf@A1234';

正则表达式:/^(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9!@#$%^&*]10,16$/; 有人可以建议我缺少什么吗?

function testpwd(pwd) 
                var re = /^(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9!@#$%^&*]10,16$/;
             console.log(" Test Result is " + re.test(pwd) )
                return re.test(pwd);
            

更新 对不起,红旗伙计们。代码正在运行。错误在其他地方:)。我正在重新表述这个问题,以便它可以对未来的访问者有所帮助。

【问题讨论】:

(?=...) 表示如果此模式遵循匹配,则匹配此字符串。 是的,那个字符串通过了那个正则表达式 但它在我的 js 中返回 false downvoters .. 请在我发布我的 JS 代码时给我一点时间.. 请澄清字符串是否包含两个' 【参考方案1】:

它似乎确实有效,https://regex101.com/r/2u0jZ2/1

虽然没有引号和分号。如果引号和分号是字符串的一部分,那么这就是匹配没有发生的原因

【讨论】:

以上是关于用于测试密码强度的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则匹配:Email 密码强度 身份证 手机号 日期等

正则表达式验证密码强度

正则表达式验证密码强度

正则表达式验证密码强度

正则表达式---总结

20条实用的正则表达式