Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
'-';使用正则表达式匹配特殊字符时不工作,c#_C#_.net_Regex - Fatal编程技术网

'-';使用正则表达式匹配特殊字符时不工作,c#

'-';使用正则表达式匹配特殊字符时不工作,c#,c#,.net,regex,C#,.net,Regex,模式是 Regex splRegExp = new System.Text.RegularExpressions.Regex(@"[\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,),#,-,_]"); 除“-”外,所有字符都有效。请告知。“-”必须是正则表达式中的第一个字符 Regex splRegExp = new System.Text.RegularExpressions.Regex(@"[-,\,@,+,\,?,\d,%,.,?,*,&,^,$,(,!,

模式是

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

除“-”外,所有字符都有效。请告知。

“-”必须是正则表达式中的第一个字符

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

“-”必须是正则表达式中的第一个字符

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

您需要转义-字符才能使其工作(这是一种正则表达式语法)

试试这个:

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

您需要转义-字符才能使其工作(这是一种正则表达式语法)

试试这个:

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

不需要所有的逗号

如果将
-
放在类中,则仅当它位于类的开头或结尾时,才表示文字破折号。否则,它表示类似于
a-Z
的范围。正如Damien所说,范围
,-,
确实很小(当然不包含
-

不需要所有的逗号


如果将
-
放在类中,则仅当它位于类的开头或结尾时,才表示文字破折号。否则,它表示类似于
a-Z
的范围。正如Damien所说,范围
,-,
确实很小(当然不包含
-

或者你可以用
\-
来“转义”
-
不,它没有。请参阅@Tim Pietzcker的答案。或者您可以使用
\-
来“逃避”
-
。不,它不会。请看@Tim Pietzcker的回答。我试图找出最好的方式来表示他确实希望
进入该角色组,而且
,-,
的范围相当小,但你似乎已经对事情进行了充分的总结。我试图找出最好的方式来表示他确实希望
是在那个字符组中,而且范围
,-,
很小,但是你似乎已经对事情做了充分的总结。为什么要用逗号?它们被视为“标准”字符而不是分隔符,因此它们是“匹配的”(
[,]
匹配
)。请注意,``将转义下一个字符。为什么要用逗号?它们被视为“标准”字符而不是分隔符,因此它们是“匹配的”(
[,]
匹配
)。注意``将转义下一个字符。