31

文字列内のすべての x を置き換えることは知っていstr.replace(/x/g, "y")ますが、これを行いたいです

function name(str,replaceWhat,replaceTo){
    str.replace(/replaceWhat/g,replaceTo);
}

最初の引数で変数を使用するにはどうすればよいですか?

4

2 に答える 2

61

コンストラクターは文字列を受け取り、RegExpそれから正規表現を作成します。

function name(str,replaceWhat,replaceTo){
    var re = new RegExp(replaceWhat, 'g');
    return str.replace(re,replaceTo);
}

正規表現で特殊な文字が含まれている可能性がある場合replaceWhatは、次のことができます。

function name(str,replaceWhat,replaceTo){
    replaceWhat = replaceWhat.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
    var re = new RegExp(replaceWhat, 'g');
    return str.replace(re,replaceTo);
}

Javascript に RegExp.escape 関数はありますか?を参照してください。

于 2013-07-23T20:09:19.153 に答える
0

以下の flags の 3 番目のパラメーターは、数年前にブラウザーから削除されたため、この回答は不要になりました。現在、フラグなしでグローバルに機能する


Replace には、3 つのパラメーターを取り、文字列を受け入れる別の形式があります。

function name(str,replaceWhat,replaceTo){
    str.replace(replaceWhat,replaceTo,"g");
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

于 2013-07-23T20:11:09.223 に答える