特殊字符的正则表达式

3

我正在尝试对一个字符串进行正则表达式替换,但效果并不如我所希望。我使用了一个在线工具构建了这个正则表达式,并且测试显示了我期望的匹配结果,但是当我运行代码时,却没有得到期望的结果。

我的代码:

  Regex reg = new Regex(@"[^a-zA-Z0-9-]$");
                string docName = t.Title.ToLower();
                reg.Replace(docName, "-");

我希望通过处理这样的字符串:"hey! thsi is am@&4$amazing!"
最终得到:"hey- thsi is am--4-amazing-

我是否有哪里做错了?


你得到了什么结果? - Steve Mitcham
1个回答

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

            ^^

$ 断言位于行尾

这将仅替换行末特殊字符。

只需使用:

[^a-zA-Z0-9-]

此外,这甚至会替换空格。所以最好使用:
[^a-zA-Z0-9 -]

See demo.

https://regex101.com/r/sJ9gM7/40


谢谢帮忙!现在非常清楚了。 - user3267755

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接