【发布时间】:2018-07-25 05:53:31
【问题描述】:
这是我的正则表达式:
[RegularExpression(@"^((?=.{12,}$)(?=[^\d]*\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=[^\W]*\W))", ErrorMessage = "Passwords must be at least 12 characters long and contain at least an upper case letter, lower case letter, digit and a symbol")]
标准:
12 个字符,至少包含一个小写字母、大写字母和特殊字符。
字符串在以下情况下被拒绝:
任何少于 12 个字符的字符串,
啊啊啊啊啊啊,
aaaaaaaaaaaa1
字符串在以下情况下被接受(应该被拒绝):
啊啊啊啊啊啊啊,
aaaaaaaaaaaa#
编辑:这是我的模型中密码获取器和设置器的代码。
[Required]
[RegularExpression("^(?=.{12,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@!%*?&,#]).+$", ErrorMessage = "Passwords must be at least 12 characters long and contain at least an upper case letter, lower case letter, digit and a symbol")]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
【问题讨论】:
-
您的密码是否包含数字,因为错误消息中也包含数字
"Passwords must be at least 12 characters long and contain at least an upper case letter, lower case letter, digit and a symbol" -
@SwapNeil 哦,是的,我以为我最初是这样做的?
-
您的测试用例到底是什么?以上不符合您的标准。如果符合条件,您需要
^(?=\D*\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=[^_\W]*[_\W]).{12,}$- 请参阅regex101.com/r/aM2bgd/1 -
@WiktorStribiżew 这些是我尝试过的字符串。需要明确的是,它们都应该失败,为了清楚起见,我将更新问题。
-
@WiktorStribiżew 我在我的 MVC 应用程序上尝试了你的测试用例,并且在不应该接受的情况下接受了相同的测试用例。我的应用程序中一定存在根本性错误,这可能会导致这种情况,因为两个正则表达式都应该工作。
标签: c# regex asp.net-mvc