Вы можете использовать
a.replace(/[^A-Za-z0-9 -]+/g,"").replace(/\s{2,}/g, ' ')
Регулярное выражение /[^A-Za-z0-9 -]+/g
будет соответствовать нескольким вхождениям (модификатор g
делает это) из 1 или более (см. +
quantifier) символов кроме букв, цифр,пробелы и / или дефисы.
Если вам нужно сопоставить пробел, замените пробел на \s
.
Обратите внимание, что \s\s+
равно \s{2,}
, где {2,}
равно ограничивающий квантификатор , соответствующий 2 или более экземплярам квантифицированного шаблона.
См. демонстрационную версию JS:
let a = "`!@A#$%A^&*A 789^&*(+_)JH?></.,\":';-";
console.log(a.replace(/[^A-Za-z0-9 -]+/g,"").replace(/\s{2,}/g, ' '));