使用正则表达式清理字符串与Base64编码字符串

时间:2012-10-25 18:36:38

标签: c# regex base64

我有一个扩展方法,它使用Regex.Replace清除用户输入的字符串中的无效字符,然后再将其添加到XML文档中。

正则表达式的目的是去掉一些随机的高位ASCII字符,当用户从Microsoft Word中粘贴文本并用空格替换它们时,这些字符偶尔出现在输入中:

    public static string CleanInput(this string inputString) {
        if (string.IsNullOrEmpty(inputString))
            return string.Empty;

        // Replace invalid characters with a space.
        return Regex.Replace(inputString, @"[^\w\.@-]", " ");
    }

现在命运如此,有人正在对包含base64编码数据的字符串使用此扩展方法。

我认为正则表达式会使base64数据的 MOST 保持不变,但我认为它可能正在改变其中一些。

那么 - 知道正则表达式中的\w匹配[A-Za-z0-9_]并且Base64实际上是相同的范围,应该这个正则表达式是否正在改变字符串?

如果它正在更改字符串,为什么以及如何更改字符串,以便仍然可以在常规非编码文本中清除hi-ASCII垃圾,而不会弄乱编码的字符串。

1 个答案:

答案 0 :(得分:1)

Base64还使用+/=

您可以将这些添加到角色类:

[^\w\.@+/=-]

请注意-必须是最后一个才能使它成为文字连字符 - 而不是指定范围。

值得考虑的是,\w不一定与[A-Za-z0-9_] according to Microsoft相同。