删除所有非字母数字和多个空格

时间:2019-04-03 08:27:07

标签: javascript regex

let a = "`!@A#$%A^&*A    789^&*(+_)JH?></.,":';-";

我需要删除除破折号以外的所有非字母字符,并用一个空格替换多个空格。

所以结果应该是-AAA 789JH-

这是我的尝试-没有成功:

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

1 个答案:

答案 0 :(得分:1)

您可以使用

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

/[^A-Za-z0-9 -]+/g正则表达式将匹配多个出现的字符(字母,数字,空格或/和连字符),这些字符多次出现(g修饰符可以这样做)为1个或多个(请参阅+量词)。

如果需要匹配任何空格,请将空格替换为\s

请注意,\s\s+等于\s{2,},其中{2,}limiting quantifier,它匹配两次或多次出现的量化模式。

请参阅JS演示

let a = "`!@A#$%A^&*A    789^&*(+_)JH?></.,\":';-";
console.log(a.replace(/[^A-Za-z0-9 -]+/g,"").replace(/\s{2,}/g, ' '));