如何过滤特殊字符但保留其他字符

时间:2013-12-09 03:17:53

标签: c# regex

我尝试过滤掉特殊字符,但希望保留tabcomma以及其他一些字符。我需要知道如何在我的正则表达式中添加逗号和制表符,以便它们不会从字符串中删除。我一说,就会收到错误。

namespace StringSearch {
using System.Text.RegularExpressions;

 class TestRegularExpressionValidation {
    static void Main() {
        string[] numbers = {"123_555-0190", "444-234-22450", "690-555-0178", 
                            "146-893-232", "146-555-0122", "4007-555,-0111", 
                            "407-55-0111", "a1b-Cd-EfgH", "a1b-Cd-Efgn",
                            "UM2345678",
                            "11/12/2013 4:10:06 PM              UM2345678                   UM2345678",
                            "407-2-5555"};

        foreach (string s in numbers) {
           string a = RemoveSpecialCharacters(s);
           Console.WriteLine(a);
        }
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }

    public static string RemoveSpecialCharacters(string str) {
        return Regex.Replace(str, "[^a-zA-Z0-9_.-]+", "", RegexOptions.Compiled);
    }
}

2 个答案:

答案 0 :(得分:1)

-应位于字符类的末尾或开头,即[]

你的正则表达式是

[^\\w.,\t-]+

\w[a-zA-Z0-9_]

类似

答案 1 :(得分:1)

您可以继续添加到角色类[],但请确保将短划线-保留在角色类的开头或结尾,否则您将需要转义{{1 }}

\-

请参阅Working demo