我的正则表达式如下:
"^[a-zA-Z](?![_.@-])[a-zA-Z0-9@-_.]+(?<![_@.-])$"
整行代码是:
[RegularExpression("^[a-zA-Z](?![_.@-])[a-zA-Z0-9@-_.]+(?<![_@.-])$", ErrorMessage = "Username must contain alphanumeric, '@', '.', '-', or '_' only ")]
我已经在网上测试了这个正则表达式,它也可以像我想要的那样工作。但是,在.NET站点上,它始终显示错误消息,即使字符串正确
此正则表达式用于用户名验证,我希望它:
答案 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个字符,这是用户名的合理限制