使用JavaScript删除字符串中所有非字母数字和任何空格

7
我正在尝试从字符串中删除任何非字母数字字符和空格。目前我有一个两步解决方案,希望将其合并为一个步骤。
var name_parsed = name.replace(/[^0-9a-zA-Z ]/g, ''); // Bacon, Juice | 234
name_parsed = name_parsed.replace(/ /g,'')
console.log(name_parsed); //BaconJuice234

请问如何在一次执行中实现上述操作,而不是分成两次执行?

3
你在原始正则表达式中包含了空格! - epascarello
@epascarello 哦,天啊...难怪我一直尝试!谢谢。 - BaconJuice
为什么不直接使用 replace(/\W+/g, '') - adeneo
@adeneo 因为\w也包括下划线_ - VisioN
@VisioN - 确实,有下划线,但只要字符串不包含下划线,这就不是问题。只是一个建议! - adeneo
1个回答

27

从第一组中删除空格即可完成任务:

name.replace(/[^0-9a-zA-Z]/g, '');

你可以将这段代码理解为“删除所有非数字([0-9])和字母([a-zA-Z])的字符”。

或者,您可以使用 i 标志来使您的正则表达式忽略大小写。然后,代码可以简化为:

name.replace(/[^0-9a-z]/gi, ''); 

@VisioN 在以下的例子中这个方法对我没用: "sdf234 234dfsf".replace(/[^0-9a-zA-Z]/g, '') 我刚在Firebug控制台里运行了一下,不确定为什么它不行。
结果 = "sdf234234dfsf"
- Jacques
@Jacques,具体是哪里出了问题?根据你的结果来看,它的表现符合预期:除数字和拉丁字母外,它删除了所有字符。 - VisioN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接