c# - 特殊字符的正则表达式

标签 c# regex

我正在尝试对字符串进行正则表达式替换,但没有我希望的那么顺利。我通过一个在线工具构建了这个正则表达式,测试结果与我的预期相符,但是当我运行我的代码时,我没有得到预期的结果。

我的代码:

  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-

我哪里做错了吗?

最佳答案

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

            ^^

$ assert position at end of a line

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

就用

[^a-zA-Z0-9-]

此外,这甚至会取代 space。所以更好地使用

[^a-zA-Z0-9 -]

查看演示。

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

关于c# - 特殊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398718/

相关文章:

c# - 在不阻塞主线程的情况下运行代码

c# - 如何不包含标志

c# - Fluent NHibernate QueryOver 选择不在另一个表中的项目(左连接)

C# 如何将字符串转换成时间和日期格式?

c# - 什么是处理异常的最佳方法以及如何在asp.net中处理它们

python - 从 HTML 中提取数据

regex - 需要从批处理中的 epub 或文本文件中提取一组 4 位数字

javascript - 正则表达式与 jQuery text() 方法相结合

regex - 匹配单词中任意位置的零个或一个特定字符

c# - 如何从字符串中去除无效字符