我有一个正则表达式,它应该适用于像P@ssword1234这样的密码。但似乎并不匹配。我在Angular中使用了相同的正则表达式,并且成功了
这是下面的密码条件
// 10 characters or more
// at least one digit
// at least one uppercase letter
// at least one lowercase letter
// at least one special character
[DisplayName("Password")]
[Required(ErrorMessage = "Please enter your password.")]
[DataType(DataType.Password)]
[RegularExpression(@"^(?=.*[!@#$%^&*(),.?"":{}|<>])(?=.*[a - z])(?=.*[A - Z])(?=.*\d)[a-zA-Z\d!@#$%^&*(),.?"":{}|<>]{10,}$",
ErrorMessage = "Password must contain at least 10 characters, including at least 1 uppercase letter, at least 1 lowercase letter, at least one number and a special character.")]
1条答案
按热度按时间ax6ht2ek1#
你的错误是把
[a-z]
写成了[a - z]
。前者实际上意味着“字母a
,或<space>
和<space>
之间的任何字符,或字母z
”。换而言之,只有字符a
、``和z
。下面是“fixed”正则表达式:
Demo
然而,正如上面的评论中提到的,我建议不要在密码中放置这样一个任意的“必需特殊字符”列表。把这个定义得更宽松一些不是更好吗?“任何不是字母或数字的东西都有资格成为‘特殊’”?
你可以用类似这样的东西来实现: