2012-10-18 125 views

回答

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

很好的答案。令我驚訝的是,/ {/是JavaScript中的合法RE。 – PhiLho

+0

謝謝我認爲被替換的字符串被放回給調用者。我可以在3分鐘內接受... – Patrick

+0

@PhiLho:http://stackoverflow.com/q/12952886/989121 – georg

3

您需要趕上從結果替換。(你可以鏈中的內容替換。)

var strOutput = 'aaa { " } '; 

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

document.write(strOutput); 

順便說一句,你可以MAK Ë它這樣簡單:

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

由於@Alnitak評論:

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

最後一行是替換多個字符的可怕方法。這是_exactly_字符類的設計目的。 – Alnitak

+0

@Alnitak你是對的。 – andlrc

1

每其他的答案,你需要使用的.replace結果。

但是你並不需要三個電話,你應該使用:

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

其中[...]字符類它匹配該組中的任何個性。在這樣的一類中,唯一需要轉義的字符是^-]\