このコードが特殊文字の置換に失敗するのはなぜですか:
var strOutput = 'aaa { " } ';
strOutput.replace(/{/g, "");
strOutput.replace(/}/g, "");
strOutput.replace(/"/g, "");
document.write( strOutput );
何を変更する必要がありますか?
このコードが特殊文字の置換に失敗するのはなぜですか:
var strOutput = 'aaa { " } ';
strOutput.replace(/{/g, "");
strOutput.replace(/}/g, "");
strOutput.replace(/"/g, "");
document.write( strOutput );
何を変更する必要がありますか?
replace
引数を変更せず、新しい文字列を返します。結果をどこかに割り当てる必要があります。そうしないと失われます。
var strOutput = 'aaa { " } ';
strOutput = strOutput.replace(/{/g, "");
strOutput = strOutput.replace(/}/g, "");
strOutput = strOutput.replace(/"/g, "");
document.write( strOutput );
[...]
または、正規表現で文字クラスを使用するだけです:
var strOutput = 'aaa { " } ';
strOutput = strOutput.replace(/[{}"]/g, "");
置換の結果をキャッチする必要があります。(そして、置換を連鎖させることができます。)
var strOutput = 'aaa { " } ';
strOutput = strOutput.replace(/{/g, "").replace(/}/g, "").replace(/"/g, "");
document.write( strOutput );
ところで、次のように簡単にすることができます:
strOutput = strOutput..replace(/({|"|})/g, "");
@Alnitak コメントの時点で:
strOutput = strOutput..replace(/[{}"]/g, "");
他の回答によると、の結果を使用する必要があります.replace
。
ただし、3 つの呼び出しは必要ありません。次を使用する必要があります。
strOutput = strOutput.replace(/[{}"]/g, '');
ここで、[...]
は、そのセット内の個々の文字に一致する文字クラスです。そのようなクラス内でエスケープする必要がある唯一の文字は^-]\