[英]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.