.NET正则表达式数据注释属性不正确匹配

问题描述 投票:0回答:1

我可以找到大量有关 .NET 正则表达式的信息,但不是专门针对正则表达式属性的信息。据我所知,它的行为与正常的 .NET RegEx 不同。

我正在尝试使用数据注释验证来验证我的产品名称 ViewModel 字段。规则是:

  1. 字符串中没有前导或尾随空格。
  2. 仅允许大小写字符和数字。
  3. 每个单词之间不得超过一个空格。

This is good 123

This   is  not    good   

this  $%^&*   is not good

123 this 555 good

这将是单行,因为它是产品标题。

我认为我需要的正则表达式是

[RegularExpression(@"([a-zA-Z0-9]+ ?)+?", ErrorMessage = "The product name can only contain letters, numbers, and a single space between each word")]

但是当我开始输入第二个单词时,数据注释显示我的产品名称无效。

我错过了什么?任何帮助将不胜感激。

谢谢。

c# .net regex validation data-annotations
1个回答
0
投票

看起来问题是由于

?
中的
@"([a-zA-Z0-9]+ ?)+?"
与前一个元素匹配零次或一次而引起的。

将表达式更新为

@"([a-zA-Z0-9]+ ?)+"
将给出预期结果。

关注正则表达式语言 - 快速参考 - .NET 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.