WPF中的Regex DataAnnotation

时间:2013-02-28 20:16:17

标签: c# wpf regex data-annotations

我无法弄清楚为什么这个正则表达式不能按照我想要的方式工作。我希望它允许这样的东西:“Test123#%& * - Test”

[RegularExpression("[^a-zA-Z0-9/#%&*\\- ]")]

MSDN文档仅提供一个示例......

[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]

我不想将输入限制为MSDN示例所做的任何特定字符长度。我在.net中使用了这个正则表达式模式和Regex对象,它运行得很好。为什么DataAnnotations的工作方式不同?

2 个答案:

答案 0 :(得分:1)

我认为使用否定类来查找不允许的字符的方法是错误的。我找不到证明它的文件,但这对我来说似乎是合乎逻辑的。

我认为您需要提供与允许输入相匹配的模式。

尝试

[RegularExpression("^[a-zA-Z0-9/#%&*\\- ]*$")]

*量词使其重复字符等级0次或更多次。这也允许空字符串!如果您不希望空字符串使用量词+,那将是一个或多个。

*{0,}的快捷方式。如果省略第二个数字,则表示没有最大匹配

+{1,}的快捷方式。

答案 1 :(得分:0)

正则表达式DataAnnotations的编写方式是查找有效内容,而不是查找无效内容。您希望与有效值匹配。

MSDN Link

我放弃你的胡萝卜(^)。这将允许您提供的每个角色都经过验证。如果有任何失败,您将生成错误消息。