我有一个视图模型,其属性具有RegularExpression
DataAnnotation:
public class CreateProductViewModel
{
[RegularExpression("[A-Za-z0-9]")]
public string Name { get; set; }
}
正则表达式应仅验证字母数字字符。
但是,尝试保存“abc”值会使验证失败。
我也尝试将正则表达式更改为"[^A-Za-z0-9]"
,但这个也失败了。
我做错了什么?
答案 0 :(得分:2)
在表达式后面添加*或+,因为现在它只会显示字符串只有一个字母/数字长才有效。为了使它有效,你有两个选择:
[RegularExpression("[A-Za-z0-9]+")]
或
[RegularExpression("[A-Za-z0-9]*")]
第一个不允许空字符串,第二个允许空字符串。
答案 1 :(得分:0)
您的原始正则表达式仅匹配单个字母数字字符。当您在RegEx测试器中使用它时,它可能看起来适当,因为它将匹配部分字符串。但是,ASP.NET要求正则表达式匹配整个输入字符串,从而有效地在您的RegEx周围放置^
和$
。如果您想匹配多个字符的输入,则应该为RegEx添加量词,很可能是*
或+
,如下所示:
[RegularExpression("[A-Za-z0-9]*")]