2012-08-29 100 views
0

好吧,我有一個大的多維JSON對象被灌入我的應用程序,其中一個對象是一個HTML字符串,用於創建鏈接。現在我沒有能力改變這個對象的輸出來取代我想要的東西,因爲這個對象在幾個地方通過幾個不同的應用程序使用。其中至今工作良好。Javascript JSON對象替換對象內的字符串

我需要做的是在JSON對象中替換一小段這個html字符串來改變它,以便它適合這個新應用程序的需求。

對象中的HTML看起來像

<a href='\/ng\/other\/?object_id=6bfb00fb-2b76'>Some Text<\/a> 

我需要做的是取代「NG」和「其他」(直接從螢火控制檯「響應標籤」少整個對象數據下拍攝)在該字符串內完全是其他內容。我曾嘗試過。

var swapVal1 = data.rows[index1].vals[1].replace(\/ng\/other\/,"/new/placement/"); 

但是我得到SyntaxError:非法字符第31行,它指向第一個替換函數。那麼,我需要做什麼,以便暫時適當地處理這個問題,直到其他事情可以在後端重寫爲這個問題的更好的替代方案。

回答

4

您的正則表達式格式錯誤。試試這個:

var swapVal1 = data.rows[index1].vals[1].replace(/\\\/ng\\\/other\\\//, "/new/placement/"); 

正則表達式字面量由/字符定界。反斜槓字符\用於轉義正則表達式元字符,因此需要轉義爲\\。由於/字符用於表示正則表達式的開始和結束,所以還需要將其轉義爲\/。所以你可以打破這個正則表達式:

/  -> start of regex 
\\ -> the first \ 
\/ -> the next/
ng -> the string "ng" 
\\ -> the next \ 
\/ -> the/after that 
other -> the string "other" 
\\ -> the next \ 
\/ -> the/after that 
/ -> end of the regex 
+1

這是真棒,我欣賞每一個正則表達式正在做什麼和在哪裏做什麼的分解。只要我能記得,我只能提供一些我沒有能夠把握的東西。無論我讀了多少關於這個主題 – chris

+1

@chris只要堅持下去:)正則表達式並不容易,但如果你繼續練習和使用它們,你最終會得到它! –