如何实现密码正则表达式?

Posted

技术标签:

【中文标题】如何实现密码正则表达式?【英文标题】:How can I achieve password regex? 【发布时间】:2013-11-11 09:10:50 【问题描述】:

我想在我的项目中使用正则表达式模式进行验证。

以下是正则表达式模式的描述:

    长度必须至少为 8 个字符。

    必须至少包含 1 个大写字符。

    必须至少包含 1 个小写字符。

    必须至少包含 1 个数字。

    可能包含以下字符:

" $ ~ ' ` ! @ # % ^ & * ( ) - + [ ] = : , . ? / | \

    不得使用重复字符。 (aa、11 等)

    不得使用超过 3 个连续字符。 (abcd、wxyz、1234等)

【问题讨论】:

我是否可以建议您的最后一个条件(f,g)实际上并没有使您的密码更强大 - 它们限制了可以选择的密码数量。另一方面,只有八的下限是可笑的。为什么要使用正则表达式?使用其他工具可以更好地解决这些“重复字符串”问题。这是“锻炼”还是“真正的工作”?在后一种情况下,告诉我们您想要使用什么工具,但您自己却没有提供任何尝试,这违背了 SO 问题的精神,这是为了展示努力。 你会认为ABCd 违反规则(g)吗? 【参考方案1】:

你可以试试这个正则表达式:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).8,$

PS:它满足所有条件,我没有包含section e.中提到的字符,因为你写了May contain,点将允许所有这些。

更新:根据已编辑的问题:使用此正则表达式满足条件(a) - (f)

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?:(?!.*?(.)\1).)8,$

我强烈建议不要使用正则表达式来满足条件 (g),因为这将是一个非常长的正则表达式。

【讨论】:

明确需要条件 (e) 而不仅仅是 .8 还有“至少8个:”8, @Floris:请阅读我对有问题的(e) 的解释,感谢我在回答中使用8, 这不行,至少需要8个字符才能满足最终条件。 @TimEbenezer:这不正确。从一开始就需要 8 个字符。所有条件都是超前的,它们不匹配。

以上是关于如何实现密码正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

如何用正则表达式实现规定用户输入密码的格式为:(长度6到18个字符,不能全为重复字母,或者连续字母)

正则表达式实现密码检查

如何使用正则表达式验证密码?

如何在 Python 中测试正则表达式密码?

正则表达式验证密码必须由大小写字母、数字、特殊字符组成

如何使用正则表达式匹配或替换仅包含数值的密码