我无法弄清楚为什么这个正则表达式不能按照我想要的方式工作。我希望它允许这样的东西:“Test123#%& * - Test”
[RegularExpression("[^a-zA-Z0-9/#%&*\\- ]")]
MSDN文档仅提供一个示例......
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]
我不想将输入限制为MSDN示例所做的任何特定字符长度。我在.net中使用了这个正则表达式模式和Regex
对象,它运行得很好。为什么DataAnnotations
的工作方式不同?
答案 0 :(得分:1)
我认为使用否定类来查找不允许的字符的方法是错误的。我找不到证明它的文件,但这对我来说似乎是合乎逻辑的。
我认为您需要提供与允许输入相匹配的模式。
尝试
[RegularExpression("^[a-zA-Z0-9/#%&*\\- ]*$")]
*
量词使其重复字符等级0次或更多次。这也允许空字符串!如果您不希望空字符串使用量词+
,那将是一个或多个。
*
是{0,}
的快捷方式。如果省略第二个数字,则表示没有最大匹配
+
是{1,}
的快捷方式。
答案 1 :(得分:0)
正则表达式DataAnnotations的编写方式是查找有效内容,而不是查找无效内容。您希望与有效值匹配。
我放弃你的胡萝卜(^)。这将允许您提供的每个角色都经过验证。如果有任何失败,您将生成错误消息。