DataAnnotations RegularExpression失败

时间:2014-02-18 16:03:47

标签: regex asp.net-mvc data-annotations

我有一个视图模型,其属性具有RegularExpression DataAnnotation:

public class CreateProductViewModel
{
    [RegularExpression("[A-Za-z0-9]")]
    public string Name { get; set; }
}

正则表达式应仅验证字母数字字符。

但是,尝试保存“abc”值会使验证失败。

我也尝试将正则表达式更改为"[^A-Za-z0-9]",但这个也失败了。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

在表达式后面添加*或+,因为现在它只会显示字符串只有一个字母/数字长才有效。为了使它有效,你有两个选择:

[RegularExpression("[A-Za-z0-9]+")]

[RegularExpression("[A-Za-z0-9]*")]

第一个不允许空字符串,第二个允许空字符串。

答案 1 :(得分:0)

您的原始正则表达式仅匹配单个字母数字字符。当您在RegEx测试器中使用它时,它可能看起来适当,因为它将匹配部分字符串。但是,ASP.NET要求正则表达式匹配整个输入字符串,从而有效地在您的RegEx周围放置^$。如果您想匹配多个字符的输入,则应该为RegEx添加量词,很可能是*+,如下所示:

[RegularExpression("[A-Za-z0-9]*")]