Javascript html.replace(regEx,“$ 0.01”)不起作用

时间:2013-12-05 16:39:50

标签: javascript regex internet-explorer-9

HTML

<div id="abc">
<span>$b $</span>
</div>

的Javascript

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中存在此问题。

3 个答案:

答案 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 ]+[$]+

jsfiddle

答案 2 :(得分:0)

我认为$0(在"$0.01"中)代表IE9中的完全匹配,因此它被替换为"$b $"。显然你必须加倍$,如此:

var app = html.replace(regEx, '$$0.01');