0

为什么此代码无法替换特殊字符:

http://jsfiddle.net/TTfzu/26/

var strOutput = 'aaa { " } '; 

strOutput.replace(/{/g, "");
strOutput.replace(/}/g, "");
strOutput.replace(/"/g, "");

document.write( strOutput );

需要改变什么?

4

3 回答 3

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, "");
于 2012-10-18T10:27:08.760 回答
3

您将需要从替换中捕获结果。(你可以链接你的替换。)

var strOutput = 'aaa { " } '; 

strOutput = strOutput.replace(/{/g, "").replace(/}/g, "").replace(/"/g, "");

document.write( strOutput );

顺便说一句,你可以让它像这样简单:

strOutput = strOutput..replace(/({|"|})/g, "");

截至@Alnitak 评论:

strOutput = strOutput..replace(/[{}"]/g, "");
于 2012-10-18T10:26:36.517 回答
1

根据其他答案,您需要使用..replace

但是你不需要三个电话,你应该使用:

strOutput = strOutput.replace(/[{}"]/g, '');

其中[...]是一个字符类,它与该集中的任何单个字符匹配。在这样一个类中,唯一需要转义的字符是^-]\

于 2012-10-18T10:29:07.260 回答