Mik*_*ohn 3 .net c# regex asp.net-mvc data-annotations
我将此正则表达式作为 C# .NET MVC 项目中密码字段的数据注释。
\n\n[RegularExpression("(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[*+\\\\/|!\\"\xc2\xa3$%^&*()#[\\\\]@~\'?><,.=-_]).{6,}", ErrorMessage = "Password must be between 6 and 20 characters and contain one uppercase letter, one lowercase letter, one digit and one special character.")]\nRun Code Online (Sandbox Code Playgroud)\n\n我想让以下密码无效:-
\n\n以下内容是有效的:-
\n\n我想要至少 6 个字符,其中至少有 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。我希望上面的正则表达式能够做到这一点,但它让Testing12和Tester12作为有效密码通过。
\n\n我可以对上面的内容进行哪些更改以获得我所期望的结果?我假设上面需要一个大写字母,一个小写字母,一个数字和一个特殊字符,但显然我错了?
\n\n提前致谢!
\n您忘记正确转义](建议甚至将其放在字符类的开头,以便在 .NET 中它可以被解析为文字]- 对于客户端验证,即使在那里也需要转义)并记住字符类中的连字符创建一个范围(例如[=-_]),因此必须将其放在字符类的末尾/开头或放在末尾以表示文字-)。
使用
\n\n"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[\\]*+\\\\/|!\\"\xc2\xa3$%^&*()#[@~\'?><,.=_-]).{6,}$"\n ^^ ^\nRun Code Online (Sandbox Code Playgroud)\n\n或者,如果您只想需要至少 1 个非字母数字字符,请使用
\n\n"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[\\W_]).{6,}$"\nRun Code Online (Sandbox Code Playgroud)\n\n其中[\\W_]匹配除单词字符外的任何字符(即[^\\p{L}\\p{N}_]或 - 在客户端 - [^a-zA-Z0-9_])+ _。
和锚点在正^则$表达式属性模式中是多余的,但它们不会造成任何损害。
请参阅正则表达式演示。
\n| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |