我尝试使用这个正则表达式:
^[a-z0-9_-@]{3,15}$
...但由于@
符号,它会引发异常。如何让它接受@
标志?
答案 0 :(得分:5)
转义-
,或将其移至字符类的开头([]
):
@"^[a-z0-9_\-@]{3,15}$"
@"^[-a-z0-9_@]{3,15}$"
如果没有转义[.. _-@]
,请尝试匹配_
和@
之间的字符。但它们之间没有任何关系:因为_
和@
的ASCII代码是95
,64
。错误消息解决了这个问题。 (即使它与@
和_
之间的字符匹配,也可能不是您想要的。)
参考:错误讯息(单声道)
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}$