1

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

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

...但由于@符号而引发异常。我怎样才能让它接受这个@标志?

4

2 回答 2

5

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

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

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

在不转义的情况[.. _-@]下尝试匹配 和 之间的_字符@。但是它们之间没有字符:因为 and 的 ASCII_@95, 64。错误消息解决了这个问题。(即使它匹配 and 之间的字符@_它也可能不是你想要的。)

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 
  ...
于 2013-10-25T06:34:25.210 回答
2

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

^[a-z0-9_@-]{3,15}$
于 2013-10-25T06:34:00.587 回答