<div id="abc">
<span>$b $</span>
</div>
var regEx = new RegExp("\\$b \\$" , 'gi');
var html = $("#abc").html();
var app = html.replace(regEx, "$0.01");
如果$value
为1.00或更高,则此工作正常。
只需0.01美元,代码会生成$b $.01
。
Internet Explorer 9中存在此问题。
答案 0 :(得分:1)
那是因为$
是正则表达式捕获组的javascript占位符。 $0
被视为“我试图替换的整个字符串”($1
是“第一个捕获组”等)。在替换字符串中使用$$
来转义美元符号并将其用作实际字符。
也就是说,在你的HTLM中使用美元符号以及执行var replaced = "$" + html.replace([placeholderRegex, actualAmount);
之类的操作也很有意义,所以你不要编码任何符号。使HTML元素通过CSS规则对美元符号进行编码会更好,因此您的最终onPage元素类似于<span class="dollar-amount">0.01</span>
,其中包含css规则dollar-amount:before { content: "$"; }
。
答案 1 :(得分:0)
此RegExp似乎有效:[$b ]+[$]+
答案 2 :(得分:0)
我认为$0
(在"$0.01"
中)代表IE9中的完全匹配,因此它被替换为"$b $"
。显然你必须加倍$
,如此:
var app = html.replace(regEx, '$$0.01');