首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >密码验证(regex?)

密码验证(regex?)
EN

Stack Overflow用户
提问于 2010-11-07 01:50:38
回答 1查看 5.1K关注 0票数 3

我需要为用户密码编写一些验证规则,并满足以下要求。C# ASP.NET MVC。

密码必须为6-8个字符。 必须包括至少一个字符,每个字符至少来自以下三个类别:

  1. 大写字母
  2. 小写字母
  3. 数字数字
  4. 非α-数字字符(例如,!@#$%.)

不得包含与用户名相同的3个或3个以上字符序列。 不得重复前一个密码中的任何一个。 如果认为密码被以任何方式泄露,则必须更改密码。

目前,我已经用if语句和循环(特别是与用户名部分顺序排列的3个字符)编写了一堆非常混乱的验证规则,这是目前的功能,但感觉是错误的。有什么更好的方法吗?

谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-07 01:58:17

我写了一个和你描述的非常相似的东西。它们可以作为一个正则表达式来完成,当它完成时(至少对我自己来说),这是一个非常有意义的成就。

要实现这一点,您需要使用一个名为lookaheads的regex特性。有关所有血淋淋的详细信息,请参阅信息上的regular-expression.info站点。

您需要的第二件事是一个实时正则表达式测试器来帮助您原型您的正则表达式。我建议你去看看[医]风疹。创建几个应该有效的密码,而一些密码不应该工作,并从那里开始作为您的起点。

编辑:详细介绍我上面的评论。并不是所有的需求都可以或应该通过正则表达式来解决。即,您列出的要求为:

  • 不得包含与用户名相同的3个或3个以上字符序列。
  • 不得重复前一个密码中的任何一个。
  • 如果认为密码被以任何方式泄露,则必须更改密码。

可能应该与主密码验证regex分开处理,因为这些都是高度上下文的。“与用户名相同的3个或多个字符的序列”可能可以在客户端处理。但是,其他两项最好留在服务器端处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4116147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档