用正则表达式替换特殊字符 - C#

时间:2016-12-07 17:17:01

标签: c# regex validation user-input

我试图使用this MSDN example从字符串中删除特殊字符(有少数例外)。我使用的是.NET框架v4.0,我的代码如下:

myString = Regex.Replace(myString, @"[^\w !@$*-_.]", "",
                                 RegexOptions.None);

但是,在测试过程中,我注意到在上面列出的字符之上,它并没有像[] \或/那样替换其他字符。我认为这些会被正则表达式捕获,它让我担心可能还有其他人也没有被捕获。

任何有关找出原因以及如何解决问题的建议都将非常感激。非常感谢你!

1 个答案:

答案 0 :(得分:1)

此版本允许您尝试添加的其他三个符号:

Regex.Replace(
    @"a!s$d*f[a\s/df]a_s.d-f",
    @"[^\w\.!$*@-]",
    "",
    RegexOptions.None)

收益率

a!s$d*fasdfa_s.d-f

您修改的问题是它允许*_之间的所有字符

您可以将您的示例重写为:

myString = Regex.Replace(myString, @"[^\w !@$*\-_.]", "",
                             RegexOptions.None);

注意连字符的转义

相关问题