我有一个扩展方法,它Regex.Replace
在将用户输入的字符串添加到 XML 文档之前使用它来清除用户输入的字符串中的无效字符。
正则表达式的目的是去除用户从 Microsoft Word 粘贴文本时偶尔出现在输入中的一些随机 hi-ASCII 字符,并用空格替换它们:
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 数据保持不变,但我认为它可能会改变其中的一些。
所以 - 知道\w
在正则表达式中是匹配的[A-Za-z0-9_]
并且 Base64 实际上是相同的范围,这个正则表达式是否应该改变字符串?
如果它正在更改字符串,为什么以及如何更改它,以便仍然在常规非编码文本中清理 hi-ASCII 垃圾,而不会弄乱编码的字符串。