如何从JS中删除字符串中的坏字符?

时间:2009-08-06 16:33:32

标签: javascript json string sanitization

我的JS使用“stringify()”将一些字符串数据保存到JSON,但是观察输出的JSON字符串,我看到很多奇怪的字符(来自键空间),例如NULL和其他坏字符。现在我没有这些“坏”字符的列表,那么如何从字符串数据中删除它们呢?

2 个答案:

答案 0 :(得分:8)

如果有一个简单的RegEx就好了,但我认为没有。根据我的理解,你仍然想要允许%$#@等字符,但是想要禁止其他奇怪的字符,如制表符和空值。如果这是正确的,我相信最简单的方法是循环每个字符并评估字符代码...

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;
}

如果你真的想使用RegEx,那么白名单方法似乎是必要的。这将允许所有数字,字母和空格......

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

答案 1 :(得分:2)

如果你有一个“好”字符列表,你可以创建一个正则表达式,匹配列表中的任何字符 not ,并删除它匹配的任何内容 - 例如,以下正则表达式匹配任何内容< em> not 字母“a”,“q”或“z”:

/[^aqz]+/ig