C# 特殊字符的正则表达式

C# 特殊字符的正则表达式,c#,regex,C#,Regex,我试图在字符串上做一个正则表达式替换,但并不像我希望的那样顺利。我从一个在线工具中构建了这个正则表达式,测试结果与我的预期相符,但是当我运行代码时,我没有得到预期的结果 我的代码: Regex reg = new Regex(@"[^a-zA-Z0-9-]$"); string docName = t.Title.ToLower(); reg.Replace(docName, "-"); 我希望通过像这样的字符串:“嘿!这是a

我试图在字符串上做一个正则表达式替换,但并不像我希望的那样顺利。我从一个在线工具中构建了这个正则表达式,测试结果与我的预期相符,但是当我运行代码时,我没有得到预期的结果

我的代码:

  Regex reg = new Regex(@"[^a-zA-Z0-9-]$");
                string docName = t.Title.ToLower();
                reg.Replace(docName, "-");
我希望通过像这样的字符串:
“嘿!这是am@&4美元惊人!”

最后我会说:
“嘿,这是am--4-惊人-

我哪里出错了

[^a-zA-Z0-9-]$

            ^^
$assert行末尾的位置

所以你们将只替换行尾前的特殊字符

只用

[^a-zA-Z0-9-]
此外,这将取代甚至
空间
。因此更好地使用

[^a-zA-Z0-9 -]
见演示


您得到的结果是什么?谢谢您的帮助!现在完全有意义了。