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

时间:2013-10-25 06:31:46

标签: c# regex vb.net

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

如果没有转义[.. _-@],请尝试匹配_@之间的字符。但它们之间没有任何关系:因为_@的ASCII代码是9564。错误消息解决了这个问题。 (即使它与@_之间的字符匹配,也可能不是您想要的。)

C# example

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

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 
  ...

答案 1 :(得分:2)

-连字符移动到正则表达式的末尾,如下所示:

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