2011-09-11 97 views
3

我有一個字符串,我需要替換所有'並等其應有的價值Javascript查找並替換一組字符?

我使用

var replace = str.replace(new RegExp("[']", "g"), "'");

要做到這一點,但問題是,它似乎是更換'每個字符(所以例如,'成爲'''''

任何幫助嗎?

+0

錯誤在於使用'[]'。如果你刪除它,它應該工作。或者使用arnaud建議的更緊湊的JS符號。 – xanatos

回答

9

使用這個:

var str = str.replace(/'/g, "'"); 

[']是一個字符類。這意味着大括號內的任何字符

這就是爲什麼你的/[']/正則表達式用替換字符串替換'的每一個字符。


如果你想使用new RegExp,而不是字面正則表達式:

var str = str.replace(new RegExp(''', 'g'), "'"); 

這有沒有好處,如果你想在運行時生成正則表達式除外。

+0

這兩個這些似乎產生一個錯誤「未終止的正則表達式字面量」 – Steven

+0

似乎在這裏工作:http://jsfiddle.net/TC5he/ – arnaud576875

6

取出支架,這使得字符類(裏面的任何字符匹配):

var replace = str.replace(new RegExp("'", "g"), "'"); 

,甚至更好,用文字:

var replace = str.replace(/'/g, "'"); 

編輯:請參閱本關於如何逃避HTML:How to unescape html in javascript?

+0

這兩個似乎產生一個錯誤「未終止的正則表達式字面量」 – Steven

+0

@Steven如何你正在使用它? –

2

而不是使用一堆正則表達式替換爲此,我會做這樣的事情讓瀏覽器爲你解碼:

function HtmlDecode(s) { 
     var el = document.createElement("div"); 
     el.innerHTML = s; 
     return el.innerText || el.textContent; 
    } 
+1

+1好主意......儘管你不需要調用delete el;(它在嚴格模式下沒有效果,甚至會引發錯誤)。你可以做'返回el.innerText || el.textContent;' –

+0

感謝您的提示,編輯。 –