我試圖在下面的示例中用「$$ Ashok」替換「this」。我沒有得到預期的輸出結果。
var adHtmltext ="this is ashok"
adHtmltext = adHtmltext.replace("this", "$$Ashok");
alert(adHtmltext);
它爲什麼在輸出中顯示$?如何解決這個問題?
這裏是的jsfiddle http://jsfiddle.net/RxDa5/
請幫助。
我試圖在下面的示例中用「$$ Ashok」替換「this」。我沒有得到預期的輸出結果。
var adHtmltext ="this is ashok"
adHtmltext = adHtmltext.replace("this", "$$Ashok");
alert(adHtmltext);
它爲什麼在輸出中顯示$?如何解決這個問題?
這裏是的jsfiddle http://jsfiddle.net/RxDa5/
請幫助。
看一看的MDN documentation:
替換字符串可以包含以下特殊替換模式:
$$
Inserts a "$".
所以你要做的:
adHtmltext.replace("this", "$$$$Ashok");
有些特殊模式可以包含在您替換目標模式的字符串中,而帶有'$$'的字符串就是其中之一。請參閱Mozilla MDN docs以獲得更好的參考。
就您的情況而言,'$$'變爲'$',因爲其他字符與'$'的某些組合,如'$ &'被保留用於匹配某些子字符串。如果你想讓你的替換工作,只需使用'$$$$ Ashok',這將在最終字符串中變成'$$ Ashok'。
$$
是$
的轉義碼,因爲$
是正則表達式反向引用的轉義碼。不幸的是,你需要這樣的:
var adHtmltext ="this is ashok"
adHtmltext = adHtmltext.replace("this", "$$$$Ashok");
alert(adHtmltext);
的.replace
方法也將接受正則表達式作爲第一個參數,如果你組的文本的一部分,你就可以將其與「反向引用您的輸出文本「使用'$'字符和一個數字來指定要使用的組($ 1,$ 2等)。
因爲'$'在這種情況下有特殊含義,所以需要轉義,'$$'是產生正常'$'的轉義序列,所以您只需要'$$$$ Ashok '在你的代碼中。
的美元符號是.replace()
保留字符事實上,在你的jsfiddle代碼,就在上面,你已經使用了它的保留的目的 - 即你在那裏得到了$1
捕捉部分表達。
$$
用於逃避美元符號。在這種情況下,您需要兩個美元符號,用於實際需要的每一個美元符號。
這是因爲否則您的輸出中不能包含字符串$1
。
[Javascript正則表達式對象和美元符號](http:// stackoverflow。com/questions/512363/javascript-regex-object-and-the-dollar-symbol) – ephemient 2012-07-23 16:02:07
@ephemient:這是關於美元符號的正則表達式。 – 2012-07-23 16:03:13