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