我试图在下面的示例中用“$$ 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