MVC网站密码字段正则校验需求:含大写/数字/特殊字符且禁空格
密码正则校验解决方案
直接给你满足需求的正则表达式:
^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])[A-Za-z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{8,}$
正则各部分拆解:
^匹配字符串开头(?=.*[A-Z])正向预查:确保字符串包含至少一个大写字母(?=.*\d)正向预查:确保字符串包含至少一个数字(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?])正向预查:确保字符串包含至少一个指定特殊字符(可根据业务需求调整特殊字符范围)[A-Za-z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]定义允许的字符集:仅包含大小写字母、数字和指定特殊字符,直接排除空格,从根源上避免空格通过校验{8,}要求密码长度至少8位$匹配字符串结尾
MVC模型中的使用示例(C#):
在模型属性上添加[RegularExpression]特性,可配合其他校验特性增强效果:
using System.ComponentModel.DataAnnotations; public class UserModel { [Required(ErrorMessage = "密码不能为空")] [RegularExpression(@"^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':""\\|,.<>\/?])[A-Za-z\d!@#$%^&*()_+\-=\[\]{};':""\\|,.<>\/?]{8,}$", ErrorMessage = "密码需包含至少1个大写字母、1个数字、1个特殊字符,长度不少于8位,且不能包含空格")] public string Password { get; set; } }
原正则失效原因:
你之前用的^(?=.*\d)(?=.*[a-zA-Z]).{8,}$存在两个问题:
.{8,}允许任意字符(包括空格),没有做字符范围限制- 只要求了数字和任意字母(大小写均可),没有强制校验大写字母和特殊字符
内容的提问来源于stack exchange,提问作者Sandeep Reddy
相关产品推荐
相关产品推荐

