密码验证(正则表达式?)

时间:2010-11-07 01:50:38

标签: asp.net-mvc regex validation passwords

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

  

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

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

    不得包含任何内容   中的3个或更多字符的序列   常用的用户名
    一定不能   重复之前的1个密码中的任何一个   如果密码是必须更改   相信会以任何方式受到损害

    目前我使用if语句和循环编写了一堆非常混乱的验证规则(特别是用户名部分顺序的3个字符),这些规则目前正在运行,但感觉就像是错误的。我能采取更好的方法吗?

    三江源

1 个答案:

答案 0 :(得分:3)

我写了一篇非常类似于你所描述的内容。它们可以作为正则表达式完成,并且在完成时(至少对我自己来说)这是一个非常有益的成就。

要实现此目的,您需要使用名为lookaheads的正则表达式功能。有关所有血腥详细信息,请参阅the information网站上的regular-expression.info

您需要的第二件事是实时正则表达式测试程序,以帮助您制作正则表达式的原型。我建议你查看Rubular。创建几个应该有效的密码,以及一些不起作用的密码,从那里开始作为起点。

修改 详细说明我的上述评论。并非每个要求都可以或应该通过正则表达式解决。即,您列出的要求为:

  
      
  • 不得包含与用户名
  • 共同的3个或更多字符的任何序列   
  • 不得重复以前的任何1个密码
  •   
  • 如果密码被认为以任何方式受到侵害,则必须更改
  •   

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