删除任何给定字符串的任何给定字符

时间:2017-07-02 12:28:00

标签: javascript regex replace

我试图创建一个可以将char和字符串作为参数的函数,并从字符串中删除该字符。

function removeCharacter(char, str) {
    return str.replace(char, '');
}
ex: removeCharacter('r', "character") - > chaacte

这样做只会删除第一个字符,所以我发现了全局正则表达式,但这里是我碰壁的地方......我怎么能这样做它所以它可以采取任何给定的字符如下:

str.replace(/char/g, '')

我希望将char作为参数传递给函数并删除所有这些参数。有没有办法用正则表达式或我应该使用for语句?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以构建Regexp。

function removeCharacter(char, str) {
    var reg = new RegExp(char, 'g');
    return str.replace(reg, '');
}

<强> [编辑]
此答案仅适用于从RegExp角度来看不是特殊字符的字符(如'/','(','。')。否则它将失败或出现意外行为.cf @Wiktor's answer

答案 1 :(得分:2)

要删除多次出现的char,请使用JavaScript need to use a regex,这是一个使用g(全局)修饰符构造的正则表达式。

但是,您不能只使用/char/g,您需要使用构造函数表示法new RegExp(char, "g")来声明正则表达式。

由于一些字符是保留的,特殊的正则表达式元字符,你必须escape them.

所以,你需要的是

&#13;
&#13;
function removeCharacter(char, str) {
    return str.replace(new RegExp(char.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), '');
}
console.log(removeCharacter("(", "(abc(")); // => abc
&#13;
&#13;
&#13;