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

RegularExpression Validation属性无法正常工作:ViewModel属性正则验证问题

解决RegularExpression验证属性失效问题

让我来帮你排查这个正则验证失效的问题,主要有两个关键错误需要修正:

1. JavaScript风格的正则修饰符不适用.NET环境

你在正则末尾加的/img是JavaScript正则的修饰符语法,但.NET的RegularExpressionAttribute不支持这种写法。.NET是通过RegexOptions枚举来设置正则选项的,比如忽略大小写(IgnoreCase)、多行模式(Multiline)这些。所以首先要去掉这部分多余的修饰符。

2. 正则表达式逻辑不符合需求

你的原正则[a-zA-Z0-9][/\\]$的含义是:字符串必须恰好两个字符,第一个是字母/数字,第二个是/或\,这显然和你想要的「路径以/或\结尾」的需求不符。

修正后的正则写法

根据你的需求(验证字符串以/或\结尾,同时允许前面有任意合法字符),正确的正则应该是:

.*[/\\]$

如果需要确保字符串开头是字母/数字(避免空字符串或者以符号开头),可以调整为:

^[a-zA-Z0-9].*[/\\]$

修正后的ViewModel代码

把正则和属性配置调整成这样:

using System.ComponentModel.DataAnnotations;
namespace ProjectName.ViewModels {
    public class ViewModel {
        [Required(ErrorMessage = "error message.")]
        // 若不需要忽略大小写,可去掉RegexOptions参数
        [RegularExpression(@".*[/\\]$", ErrorMessage = "End with '/' or '\\' character.", 
            RegexOptions = RegexOptions.None)]
        public string FilePath { get; set; }
        public ViewModel() { }
    }
}

额外注意事项:确保客户端验证正常工作

如果你的视图里需要客户端验证,还要确保页面引用了必要的验证脚本:

  • 确认_Layout.cshtml中包含jquery.validate.js和jquery.validate.unobtrusive.js
  • 你现有表单的asp-action、asp-controller属性会自动生成不显眼验证标记,这部分无需修改

这样调整后,正则验证应该就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:55:55