正则表达式匹配任何非单词字符,但减去

时间:2012-08-29 15:46:08

标签: .net regex

我需要清理文件名。所以我有这个代码:

//\W_ is any non-word character (not [^a-zA-Z0-9_]).
Regex regex = new Regex(@"[\W_]+");
return regex.Replace(source, replacement);

这样可以正常工作,但现在我不想删除减号( - ),所以我将正则表达式更改为:

[\W_^-]+

但这不起作用。我错过了什么?

2 个答案:

答案 0 :(得分:18)

尝试使用此正则表达式:

[^\w-]+

<击>

修改:

似乎正确的正则表达式是:

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

答案 1 :(得分:2)

只是颠倒你想要的和你不想要的东西:

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

RegexPal link for this.