RegularExpression数据注释

时间:2016-04-23 20:17:14

标签: c# regex asp.net-mvc

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

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; }

2 个答案:

答案 0 :(得分: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]*$"
                                    ^^^^^^^^^^^^

根据需要调整量词。

答案 1 :(得分:0)

尝试使用此[RegularExpression(@“^(?=。 \ d)(?=。 [az])(?=。* [AZ])$”)]

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

祝你好运