我需要在ASP.NET MVC 4中使用数据注释编写模型对象验证。要求是允许所有字母,数字和以下字符。
@'!&(){}:;,[].+?/-
所有其他特殊字符应该是验证错误。 我有以下代码
[RegularExpression(@"^[a-zA-Z0-9 @'!&(){}:;,\[\].+?/-]+", ErrorMessage = NameIsNotValid)]
public string Name { get; set; }
此代码不会为字符串“TEST NAME |||”
抛出验证异常但如果我将代码修改为
[RegularExpression(@"^[a-zA-Z0-9 '!&(){}:;,\[\].+?/-]+", ErrorMessage = NameIsNotValid)]
public string Name { get; set; }
通过从正则表达式验证中删除一个char(@或 - )来正确执行。我再次添加char,不抛出验证错误
现在我被困住了,不知道该做什么..请建议
答案 0 :(得分:0)
我只能在正常的c#中测试它,我发现你的正则表达式存在两个问题:
您不使用结束锚$
,因此只要名称以有效字符开头,您的验证应始终为真。
a-zA-Z
只是ASCII字母。我会将Unicode character property \p{L}
替换为匹配任何语言的任何字母。
所以,试试
[RegularExpression(@"^[\p{L}0-9 @'!&(){}:;,\[\].+?/-]+$", ErrorMessage = NameIsNotValid)]
public string Name { get; set; }