8

私の JS は "stringify()" を使用して一部の文字列データを JSON に保存しますが、出力された JSON 文字列を観察すると、NULL やその他の不正な文字など、多くの奇妙な文字 (キースペース外) が表示されます。これらの「悪い」文字のリストがないので、文字列データからそれらを取り除くにはどうすればよいですか?

4

2 に答える 2

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,'');
于 2009-08-06T16:41:55.137 に答える
2

「適切な」文字のリストがある場合は、リストにない任意の文字に一致する正規表現を作成し、一致するものをすべて削除できます。たとえば、次の正規表現、文字「a」、「q」以外のものに一致します。または「z」:

/[^aqz]+/ig
于 2009-08-06T16:41:15.293 に答える