1
var s= "this is inline $\alpha$, $$not$$";

我怎样才能替换'$'by'%%'而不是'$$'.

这样输出是

var s= "this is inline %%\alpha%%, $$not$$";

我刚在想

s.split('$').join('%%')

但我只需要一美元而不是两美元。

4

2 回答 2

9

您可以使用回调和贪婪量词:

s.replace(/\$+/g, function(match) {
    return match.length === 1 ? '%' : match;
});
于 2013-04-29T18:31:22.610 回答
3

另一种方法:

.replace(/(^|[^$])\$([^$]|$)/g, "$1%%$2")

既然$是单独的,应该没有$前后,所以我们可以尝试匹配一个非$字符的前后,并在替换字符串中替换它们。

于 2013-04-29T18:35:28.107 回答