2014-01-25 41 views
5

我试图删除所有的破折号和字符串下划线String.prototype.replace(),但它不工作,我不知道为什么。我的代码:String.prototype.replace()删除破折号和下划线

var str = "dash-and_underscore"; 
str = str.replace(/_|\-/, " "); 
console.log(str); 

输出:

"dash and_underscore" 
在Chrome控制台

由于|的行为像OR操作者,我做错了什么?我试着解决方案here,但它没有工作,还是我太愚蠢理解 - 这是一个选择;)

回答

19

试试这个:

str = str.replace(/[_-]/g, " "); 

[..]定义字符类
g意味着全球研究

(你可以用一个量词/[_-]+/g以一次删除多个连续的字符它写。)

str = str.replace(/_|-/g, " "); 

这是正确的太多,但速度较慢。请注意,破折号不需要从字符类中跳出,因为它不是特殊字符。

+0

哦,facepalm对我来说......“全球比赛”旗帜。谢谢@ casimir-et-hippolyte! –