首页 > 解决方案 > 删除所有非字母数字和多个空格

问题描述

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

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

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

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

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

标签: javascriptregex

解决方案


您可以使用

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

/[^A-Za-z0-9 -]+/g则表达式将匹配除字母、数字、空格或/和连字符之外g的 1 个或多个(请参阅量词)字符的多次出现(修饰符) 。+

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

请注意,\s\s+等于\s{2,}where{2,}限制量词匹配 2 次或更多次出现的量化模式。

查看 JS 演示:

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


推荐阅读