ASP.NET MVC [RegularExpression]属性在整个字符串匹配中不起作用

时间:2011-06-08 05:31:16

标签: asp.net-mvc regex asp.net-mvc-3 jquery-validate unobtrusive-validation

我似乎无法在Stack Overflow上找到关于此的类似主题,所以这里是:

为什么我在ASP.NET MVC视图模型类中指定以下定义:

[Required]
[RegularExpression(@"\A\d{3,4}\Z",
   ErrorMessage = "The security code (CVN) must be between 3 - 4 digits long.")]
[Display(Name = "Card Security Code (CVN)")]
public string CardCVN { get; set; }

在我不引人注意的客户端验证测试中,正则表达式无法验证? (随后显示表单字段错误)。

似乎只要我的正则表达式更改为[RegularExpression(@"\d{3,4}"...删除整个字符串匹配技术,它就匹配完美?并且似乎呈现的jquery验证,即使它不适用\A\Z它只匹配整个字符串匹配(做我最初需要的!);我错过了什么吗?

感谢。

2 个答案:

答案 0 :(得分:3)

在客户端,正则表达式由JavaScript执行,JS不支持\A\Z\z。您可以使用^$代替,但您不需要。验证器中使用的正则表达式通常自动锚定在两端。我很确定ASP.NET MVC是这种情况。

答案 1 :(得分:2)

请改用:@"^\d{3,4}$"

^ - 字符串的开头。

$ - 字符串结束。