2014-02-18 73 views
1

我有一个视图模型与具有RegularExpression DataAnnotation一个属性:DataAnnotations正则表达式失败

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

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

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

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

我在做什么错了?

回答

2

在表达式后面添加*或+,因为现在它会告诉您该字符串只有在一个字母/数字长的情况下才有效。为了使工作你有两个选择:

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

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

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

0

您的原始正则表达式只会匹配单个字母数字字符。当您在RegEx测试程序中使用它时,它可能会显示它正常工作,因为它会匹配部分字符串。但是,ASP.NET需要使用正则表达式来匹配整个输入字符串,因此您的RegEx周围实际上会放置^$。如果你想匹配多个字符的输入,你应该量词添加到您的正则表达式,最有可能*+,像这样:

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