2009-08-06 100 views
8

我的JS使用「stringify()」將一些字符串數據保存到JSON中,但是觀察輸出的JSON字符串,我看到很多奇怪的字符(超出鍵空間),例如NULL和其他不好的字符。現在我沒有這些「壞」字符的列表,所以我怎樣才能從我的字符串數據中刪除它們?如何從JS中的字符串去除不好的字符?

+1

什麼導致這些奇怪的字符?調查根本原因並在那裏解決它會更好。 – 2009-08-06 16:49:46

回答

8

這將是很好,如果有一個簡單的正則表達式,但我不認爲有。根據我的理解,你仍然希望允許像%$#@等字符,但是想禁止其他古怪的字符,如製表符和空值。如果這是正確的,我相信最簡單的方法是將循環每個字符,並評估煤焦代碼...

function stripCrap(val) { 
    var result = ''; 

    for(var i = 0, l = val.length; i < l; i++) { 
    var s = val[i]; 
    if(String.toCharCode(s) > 31) 
     result += s; 
    } 

    return result; 
} 

如果你真的想用正則表達式,白名單的做法似乎有必要。這將允許所有的數字,字母和空格...

val = val.replace(/[^a-z 0-9]+/gi,''); 
+0

非常感謝白名單建議。這樣一個很好的解決方案來自這個問題 – Mansiemans 2011-10-24 21:10:19

+0

我得到的錯誤:'TypeError:對象函數字符串(){[本機代碼]}沒有方法'toCharCode''在鉻 – nnyby 2011-12-15 21:54:47

+0

我得到它的工作,只是改變該行: 'if(s.charCodeAt(0)> 31){' – nnyby 2011-12-15 21:58:10

2

如果你有「好」字符的列表,你可以創造出您的列表中匹配任何字符一個正則表達式,並去掉任何它匹配 - 例如,下面的正則表達式匹配任何字母「a」,「q」或「z」:

/[^aqz]+/ig 
相關問題