正则表达式数据注释

问题描述 投票:1回答:2

我正在尝试检查(在ASP.net MVC中)输入的密码是否包含“大写,小写和数字”。正则表达式很好,但它不起作用(请输入有效的密码)。如果我输入一个简单的表达式@“^ d + $”,它是否有效。怎么了?谢谢!

private const string Pattern = @"^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])$";

[DataType(DataType.Password)]
[DisplayName("Password:")]
[Required(ErrorMessage = "Please enter your password.")]
[RegularExpression(Pattern, ErrorMessage = "Please enter a valid password")]
public string Password { get; set; }
c# regex asp.net-mvc
2个回答
2
投票

正则表达式模式与任何字符串都不匹配,因为它要求字符串具有大写和小写字母和数字,但没有消耗子模式。要匹配任何长度的字符串,请使用

@"^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$"
                                    ^^

或者 - 仅匹配非空字符串

@"^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).+$"
                                    ^^

.*匹配除换行符之外的任何0+个字符,.+匹配除换行符之外的1+个字符。

如果您希望字符串仅包含大写和小写字母或/和数字,请使用[a-zA-Z0-9]字符类:

@"^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]*$"
                                    ^^^^^^^^^^^^

根据需要调整量词。


0
投票

尝试使用这个[RegularExpression(@“^(?=。\ d)(?=。[a-z])(?=。* [A-Z])$”)]

数字应该是(?=。\ d)而不是(?=。[0-9])

祝好运

© www.soinside.com 2019 - 2024. All rights reserved.