[英]Using a Regex to clean string versus Base64 Encoded string
我有一个扩展方法,该方法使用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垃圾,而不会破坏编码的字符串。
Base64还使用+
, /
和=
。
您可以将这些添加到您的角色类中:
[^\w\.@+/=-]
请注意, -
必须为最后,才能使其为文字连字符减号,而不是指定范围。
根据Microsoft的说法 , \\w
不一定与[A-Za-z0-9_]
相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.