.NET Datamodel Regex始终显示错误消息

时间:2017-07-27 15:07:35

标签: c# .net regex

我的正则表达式如下:

"^[a-zA-Z](?![_.@-])[a-zA-Z0-9@-_.]+(?<![_@.-])$"

整行代码是:

   [RegularExpression("^[a-zA-Z](?![_.@-])[a-zA-Z0-9@-_.]+(?<![_@.-])$", ErrorMessage = "Username must contain alphanumeric, '@', '.', '-', or '_' only ")]

我已经在网上测试了这个正则表达式,它也可以像我想要的那样工作。但是,在.NET站点上,它始终显示错误消息,即使字符串正确

此正则表达式用于用户名验证,我希望它:

  • 以字母开头(不区分大小写)
  • 包含字母数字,@, - ,_和。只(不必包含 那些东西,但那些是有效的人物
  • 没有@, - ,_或。在字符串的开头或结尾

2 个答案:

答案 0 :(得分:1)

为什么不简单: "^[a-zA-Z][a-zA-Z0-9@-_.]*[a-zA-Z0-9]$"

答案 1 :(得分:0)

你应该把&#34; - &#34;作为字符范围中的第一个字符,因为否则@-_表示:范围内的所有字符&#34; @&#34; ......&#34; _&#34; (@ThomasAyoub给出了暗示)。正如@CCH已经说过的那样,你可以简化表达式

^[a-zA-Z][-a-zA-Z0-9@_.]*[a-zA-Z0-9]$
          ^
          Note the "-" here

此表达还需要至少2个字符,这是用户名的合理限制