在Javascript中替换子串之间的特定字符

时间:2014-05-25 02:46:53

标签: javascript regex string replace substring

我有一个带有把手的HTML字符串,如下所示:

var text = '<p>This is the {{description}}</p><pre><code class="hljs">{{capitalize property}}</code></pre>'

我想搜索字符串并用另一个字符替换把手括号(即{})(在这种情况下,是一个代表html实体的字符串。例如,{只有当把手位于打开和关闭代码标签之间时才会分别{1}}和&#123;(注意,标签可以有一个类)。

因此,上面的字符串将如下所示:

&#125;

可能的选项:

我知道我可以将字符串附加到文档并使用jQuery操作它。我也知道var text = '<p>This is the {{description}}</p><pre><code class="hljs">&#123;&#123;capitalize property&#125;&#125;</code></pre>' 方法。

在Javascript中,是否有一种简单的方法可以实现我的目标?那种方法会有很大的性能劣势吗?

我的尝试看起来像这样:

DOMparser()

1 个答案:

答案 0 :(得分:1)

使用正则表达式解析HTML代码可能会非常缓慢或导致意外后果。

无论如何,此代码会尝试找到所有<code>块,并用{{}}替换[[]]。代码块可以有多个属性。

text.replace(/<code(?:\s+[^>]+)*>(?:.*?{{.+?}})*.*<\/code>/g, function(a) {
    return(a.replace(/{{/g, "[[").replace(/}}/g, "]]"));
})