如何实现密码正则表达式?
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 个字符。所有条件都是超前的,它们不匹配。以上是关于如何实现密码正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章