удалить все не алфавитные и множественные пробелы - PullRequest
0 голосов
/ 03 апреля 2019
let a = "`!@A#$%A^&*A    789^&*(+_)JH?></.,":';-";

Мне нужно удалить все не алфавитные символы, кроме тире, и заменить несколько пробелов одним пробелом.

Таким образом, результат должен быть - AAA 789JH-

Вот моя попытка - безуспешно:

a = a.replace("[^A-Za-z0-9 -]","");
a = a.replace(/\s\s+/g, ' ');

1 Ответ

1 голос
/ 03 апреля 2019

Вы можете использовать

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, ' '));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...