我需要为用户密码编写一些验证规则,并满足以下要求。 C#ASP.NET MVC。
密码必须为6 - 8个字符
必须至少包含一个字符 每个来自至少三个 以下类别:
不得包含任何内容 中的3个或更多字符的序列 常用的用户名
一定不能 重复之前的1个密码中的任何一个 如果密码是必须更改 相信会以任何方式受到损害
目前我使用if语句和循环编写了一堆非常混乱的验证规则(特别是用户名部分顺序的3个字符),这些规则目前正在运行,但感觉就像是错误的。我能采取更好的方法吗?
三江源
答案 0 :(得分:3)
要实现此目的,您需要使用名为lookaheads的正则表达式功能。有关所有血腥详细信息,请参阅the information网站上的regular-expression.info。
您需要的第二件事是实时正则表达式测试程序,以帮助您制作正则表达式的原型。我建议你查看Rubular。创建几个应该有效的密码,以及一些不起作用的密码,从那里开始作为起点。
修改强> 详细说明我的上述评论。并非每个要求都可以或应该通过正则表达式解决。即,您列出的要求为:
- 不得包含与用户名
共同的3个或更多字符的任何序列- 不得重复以前的任何1个密码
- 如果密码被认为以任何方式受到侵害,则必须更改
应该与主密码验证正则表达式分开处理,因为这些是高度上下文的。可以在客户端处理“与用户名共同的3个或更多字符的序列”。但是,其他两个项目可能最好在服务器端处理。