正则表达式:如何接受at符号(@)?

Moj*_*oDK 1 c# regex vb.net

我尝试使用这个正则表达式:

^[a-z0-9_-@]{3,15}$ 
Run Code Online (Sandbox Code Playgroud)

...但由于@符号,它会引发异常.我如何让它接受@标志?

fal*_*tru 5

转义-,或将其移动到字符类([])的开头:

@"^[a-z0-9_\-@]{3,15}$"

@"^[-a-z0-9_@]{3,15}$"
Run Code Online (Sandbox Code Playgroud)

没有转义[.. _-@]尝试匹配_和之间的字符@.但是,它们之间没有字符内:由于ASCII码_@95,64.错误消息解决了这个问题.(即使它匹配@和之间的字符_,它可能不是你想要的.)

C#示例

参考:错误消息(单声道)

Unhandled Exception: System.ArgumentException: parsing "^[a-z0-9_-@]{3,15}$" - [95-64] range in reverse order.
Parameter name: ^[a-z0-9_-@]{3,15}$
  at System.Text.RegularExpressions.Syntax.Parser.ParseCharacterClass (RegexOptions options) [0x00000] in <filename unknown>:0 
  ...
Run Code Online (Sandbox Code Playgroud)