2011-02-23 124 views
0

模式不工作是“ - ”,而使用正则表达式匹配的特殊字符,C#

Regex splRegExp = new System.Text.RegularExpressions.Regex(@"[\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,),#,-,_]"); 

除了所有字符的工作“ - ”。请指教。

+0

为什么所有的逗号?它们被视为一个“标准”字符而不是分隔符,所以它们被“匹配”('[,]'匹配',')。并且要注意'\'转义下一个字符。 – xanatos 2011-02-23 13:05:44

回答

4

使用

@"[,@+\\?\d%.*&^$(!)#_-]" 

无需所有这些逗号。

如果您将-放在character class的内部,则仅当它位于课程的开始或结束时才表示文字短划线。否则它表示一个范围如A-Z。正如Damien所说,范围,-,确实相当小(当然并不包含-)。

+0

我试图想出一个最好的方式来说明他确实想要','在这个角色组中,并且范围'' - - ''很小,但是您似乎已经充分总结了一些事情。 – 2011-02-23 13:04:56

1

' - '必须是您的正则表达式中的第一个字符。

Regex splRegExp = new System.Text.RegularExpressions.Regex(@"[-,\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,),#,_]"); 
+0

或者你可以用'\ -'' – xanatos 2011-02-23 13:02:39

+0

“逃避”'''不,它不会。请参阅@Tim Pietzcker的答案。 – 2011-02-23 13:16:19

0

你需要逃脱字符数限制为它工作(这是一个正则表达式语法)

试试这个:

"[\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,),#,\-,_]" 
相关问题