You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,}$存在两个问题:

  1. .{8,}允许任意字符(包括空格),没有做字符范围限制
  2. 只要求了数字和任意字母(大小写均可),没有强制校验大写字母和特殊字符

内容的提问来源于stack exchange,提问作者Sandeep Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:12:25