WPF中的Regex数据注释



我不明白为什么这个正则表达式不能按我想要的方式工作。我希望它允许这样的东西:"Test123#%&*- Test"

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

MSDN文档只给出了一个例子…

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

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

我认为您使用否定类来查找不允许的字符的方式是错误的。我找不到文档来证明这一点,但在我看来这似乎是合乎逻辑的。

我认为你需要给出一个匹配允许输入的模式。

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

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

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

+{1,}的快捷方式

Regex DataAnnotations的编写方式是查找有效的内容,而不是查找无效的内容。

MSDN联系

我会掉你的胡萝卜(^)。这将允许您提供的每个角色进行验证。如果出现任何错误,您将生成错误消息。

最新更新