【发布时间】:2017-04-16 06:37:00
【问题描述】:
我已将此正则表达式作为 C# .NET MVC 项目中密码字段的数据注释。
[RegularExpression("(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[*+\\/|!\"£$%^&*()#[\\]@~'?><,.=-_]).{6,}", ErrorMessage = "Password must be between 6 and 20 characters and contain one uppercase letter, one lowercase letter, one digit and one special character.")]
我想让以下密码无效:-
- 测试
- 测试1
- TestTinG123
以下是有效的:-
- 测试1*
- T&sting123*
- %F&y5HD$S
我想要至少 6 个字符,其中至少一个大写字母、一个小写字母、一个数字和一个特殊字符。我希望上面的正则表达式能做到这一点,但它让 Testing12 和 Tester12 作为有效密码通过。
我可以在上面进行哪些更改以获得我所期望的?我假设上面需要一个大写,一个小写,一个数字和一个特殊字符,但显然我错了?
提前致谢!
【问题讨论】:
-
就我个人而言,我不会将所有这些要求都塞进一个正则表达式中。您可以使用
string.Length进行长度检查,然后您可以使用 3 个简单的正则表达式来检测至少一个特定类型的字符。 IMO 将更具可读性和更易于维护。
标签: c# .net regex asp.net-mvc data-annotations