为什么此代码无法替换特殊字符:
var strOutput = 'aaa { " } ';
strOutput.replace(/{/g, "");
strOutput.replace(/}/g, "");
strOutput.replace(/"/g, "");
document.write( strOutput );
需要改变什么?
答案 0 :(得分:4)
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, "");
答案 1 :(得分:3)
您需要从替换中捕获结果。 (你可以链接替换。)
var strOutput = 'aaa { " } ';
strOutput = strOutput.replace(/{/g, "").replace(/}/g, "").replace(/"/g, "");
document.write( strOutput );
顺便说一句,你可以这么简单:
strOutput = strOutput..replace(/({|"|})/g, "");
截至@Alnitak评论:
strOutput = strOutput..replace(/[{}"]/g, "");
答案 2 :(得分:1)
根据其他答案,您需要使用.replace
的结果。
但是你不需要三个电话,你应该使用:
strOutput = strOutput.replace(/[{}"]/g, '');
其中[...]
是字符类,它匹配该集合中的任何单个字符。在这样的类中,唯一需要转义的字符是^-]\