我正在尝试检查(在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; }
正则表达式模式与任何字符串都不匹配,因为它要求字符串具有大写和小写字母和数字,但没有消耗子模式。要匹配任何长度的字符串,请使用
@"^(?=.*[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]*$"
^^^^^^^^^^^^
根据需要调整量词。
尝试使用这个[RegularExpression(@“^(?=。\ d)(?=。[a-z])(?=。* [A-Z])$”)]
数字应该是(?=。\ d)而不是(?=。[0-9])
祝好运