2009-08-06 67 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 
相关问题