2012-07-23 63 views
4

我試圖在下面的示例中用「$$ Ashok」替換「this」。我沒有得到預期的輸出結果。

var adHtmltext ="this is ashok" 
    adHtmltext = adHtmltext.replace("this", "$$Ashok"); 
    alert(adHtmltext); 

它爲什麼在輸出中顯示$?如何解決這個問題?

這裏是的jsfiddle http://jsfiddle.net/RxDa5/

請幫助。

+0

[Javascript正則表達式對象和美元符號](http:// stackoverflow。com/questions/512363/javascript-regex-object-and-the-dollar-symbol) – ephemient 2012-07-23 16:02:07

+0

@ephemient:這是關於美元符號的正則表達式。 – 2012-07-23 16:03:13

回答

2

有些特殊模式可以包含在您替換目標模式的字符串中,而帶有'$$'的字符串就是其中之一。請參閱Mozilla MDN docs以獲得更好的參考。

就您的情況而言,'$$'變爲'$',因爲其他字符與'$'的某些組合,如'$ &'被保留用於匹配某些子字符串。如果你想讓你的替換工作,只需使用'$$$$ Ashok',這將在最終字符串中變成'$$ Ashok'。

3

$$$的轉義碼,因爲$是正則表達式反向引用的轉義碼。不幸的是,你需要這樣的:

var adHtmltext ="this is ashok" 
adHtmltext = adHtmltext.replace("this", "$$$$Ashok"); 
alert(adHtmltext); 
2

.replace方法也將接受正則表達式作爲第一個參數,如果你組的文本的一部分,你就可以將其與「反向引用您的輸出文本「使用'$'字符和一個數字來指定要使用的組($ 1,$ 2等)。

因爲'$'在這種情況下有特殊含義,所以需要轉義,'$$'是產生正常'$'的轉義序列,所以您只需要'$$$$ Ashok '在你的代碼中。

3

的美元符號是.replace()

保留字符事實上,在你的jsfiddle代碼,就在上面,你已經使用了它的保留的目的 - 即你在那裏得到了$1捕捉部分表達。

$$用於逃避美元符號。在這種情況下,您需要兩個美元符號,用於實際需要的每一個美元符號。

這是因爲否則您的輸出中不能包含字符串$1