我正在使用MVC.net 4来构建Web应用程序。 我需要使用正则表达式来满足以下条件:
小心第4点,我只需要在数字和特殊字符之间表达或条件(不包括数字和特殊字符的情况)。
我正在使用以下代码正常工作,但需要使用数字和符号之间的情况。
[Required(ErrorMessage = "New Password is Required")]
[StringLength(32, MinimumLength = 6, ErrorMessage = "New Password should not be lessthan 6 character.")]
[RegularExpression(@"(?=.*[a-zA-Z0-9])(?=.*[~!@#$%^&*])[a-zA-Z0-9~!@#$%^&*]{8,15}", ErrorMessage = "Password should contain atleast one upper and lower character and on digit or special character.")]
public string NewPassword { get; set; }
即。我只需要密码表达式就像设置amanDeep1然后不需要检查符号或设置为@amanDeep然后不需要检查数值。
答案 0 :(得分:1)
您将数字作为字符类的一部分放在第一个前瞻中,整个正则表达式实际上并不是您需要的。
将0-9
置于特殊字符前瞻要求中,并将第一个前瞻分割为需要至少1个较低且至少1个大写字母:
(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9~!@#$%^&*])[a-zA-Z0-9~!@#$%^&*]+
^^^^^^^^^^^^^^^^^^^^^^ ^^^ ^
请注意,您最后可以使用+
,因为长度受[StringLength(32, MinimumLength = 6, ErrorMessage = "New Password should not be lessthan 6 character.")]
限制。
模式详情:
RegularExpressionAttribute
内的模式默认锚定(?=.*[a-z])
- 需要1个小写ASCII字母(?=.*[A-Z])
- 需要1个大写ASCII字母(?=.*[0-9~!@#$%^&*])
- 需要来自该集合的1位数或特殊字符(注意, OR 关系默认位于正字符类中的字符/范围之间)[a-zA-Z0-9~!@#$%^&*]+
- 来自