我需要一个正则表达式,检查密码是否包含至少一个小写字母,至少一个大写字母,至少两个数字和至少一个(_*&$)。这是一个MVC项目。这就是我所拥有的
[RegularExpression(@"(?=\.\*\\d{2})(?=\./*[a-z])(?=\.\*[A-Z])(?=.*[_*&$])", ErrorMessage = "The password must contain at least 1 letter, 2 digits and a special symbol (_*&$)")]
当前的正则表达式有很多问题:
.
和*
,现在它们表示文本.
和*
字符,而您希望将它们用作特殊的正则表达式元字符\d{2}
模式,因为它不匹配非连续数字,您需要\d.*\d
或更有效的(?:\d*\d){2}
因此,你需要
@"^(?=(?:\D*\d){2})(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=[^_*&$]*[_*&$]).*"
详细信息
^
-字符串开始(?=(?:\d*\d){2})
-两个不一定连续的数字(?=[^a-z]*[a-z])
-至少一个小写ASCII字母(?=[^A-Z]*[A-Z])
-至少一个大写ASCII字母(?=[^_*&$]*[_*&$])
-_*&$
集中的至少一个特殊字符.*
-整个字符串(没有换行符)(它会被消耗)。