String.prototype.replace()删除破折号和下划线

Rod*_*ros 6 javascript regex

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

var str = "dash-and_underscore";
str = str.replace(/_|\-/, " ");
console.log(str);
Run Code Online (Sandbox Code Playgroud)

输出:

"dash and_underscore"
Run Code Online (Sandbox Code Playgroud)

在Chrome控制台中.

既然|ORopperator 这样的行为,我做错了什么?我在这里尝试过这个解决方案,但它不起作用,或者我太愚蠢无法理解 - 这是一个选项;)

Cas*_*yte 25

试试这个:

str = str.replace(/[_-]/g, " "); 
Run Code Online (Sandbox Code Playgroud)

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

(你可以用量词/[_-]+/g来编写它,一次删除几个连续的字符.)

要么

str = str.replace(/_|-/g, " ");
Run Code Online (Sandbox Code Playgroud)

这也是正确的,但速度较慢.请注意,破折号不需要从字符类中转义,因为它不是特殊字符.