【问题标题】:DataAnnotations RegularExpression failsDataAnnotations 正则表达式失败
【发布时间】:2014-02-18 16:03:47
【问题描述】:
我有一个具有RegularExpression DataAnnotation 属性的视图模型:
public class CreateProductViewModel
{
[RegularExpression("[A-Za-z0-9]")]
public string Name { get; set; }
}
正则表达式应该只验证字母数字字符。
但是,尝试保存“abc”值会导致验证失败。
我也尝试将正则表达式更改为"[^A-Za-z0-9]",但这个也失败了。
我做错了什么?
【问题讨论】:
标签:
regex
asp.net-mvc
data-annotations
【解决方案1】:
在表达式后添加 * 或 +,因为现在它会告诉您该字符串只有在一个字母/数字长时才有效。要使其正常工作,您有两种选择:
[RegularExpression("[A-Za-z0-9]+")]
或
[RegularExpression("[A-Za-z0-9]*")]
第一个不允许空字符串,第二个允许空字符串。
【解决方案2】:
您的原始正则表达式将仅匹配单个字母数字字符。当您在 RegEx 测试器中使用它时,它可能看起来工作正常,因为它会匹配字符串的某些部分。但是,ASP.NET 需要正则表达式来匹配整个输入字符串,从而有效地将 ^ 和 $ 放在 RegEx 周围。如果你想匹配多个字符的输入,你应该在你的正则表达式中添加一个量词,很可能是* 或+,如下所示:
[RegularExpression("[A-Za-z0-9]*")]