2012-07-23 71 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