Как я могу удалить плохие символы из строки в JS? - PullRequest
8 голосов
/ 06 августа 2009

Мой JS сохраняет некоторые строковые данные в JSON, используя "stringify ()", но, наблюдая за выводимой строкой JSON, я вижу много странных символов (вне пространства ключей), таких как NULL и другие плохие символы. Теперь у меня нет списка этих «плохих» символов, так как я могу удалить их из моих строковых данных?

Ответы [ 2 ]

8 голосов
/ 06 августа 2009

Было бы неплохо, если бы для этого был простой 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,'');
2 голосов
/ 06 августа 2009

Если у вас есть список «хороших» символов, вы можете создать регулярное выражение, которое соответствует любому символу , а не в вашем списке, и удалить все, что ему соответствует - например, следующее регулярное выражение соответствует любому не буквы «а», «q» или «z»:

/[^aqz]+/ig
...