我有一个带有把手的HTML字符串,如下所示:
var text = '<p>This is the {{description}}</p><pre><code class="hljs">{{capitalize property}}</code></pre>'
我想搜索字符串并用另一个字符替换把手括号(即{
和}
)(在这种情况下,是一个代表html实体的字符串。例如,{只有当把手位于打开和关闭代码标签之间时才会分别{1}}和{
(注意,标签可以有一个类)。
因此,上面的字符串将如下所示:
}
可能的选项:
我知道我可以将字符串附加到文档并使用jQuery操作它。我也知道var text = '<p>This is the {{description}}</p><pre><code class="hljs">{{capitalize property}}</code></pre>'
方法。
在Javascript中,是否有一种简单的方法可以实现我的目标?那种方法会有很大的性能劣势吗?
我的尝试看起来像这样:
DOMparser()
答案 0 :(得分:1)
使用正则表达式解析HTML代码可能会非常缓慢或导致意外后果。
无论如何,此代码会尝试找到所有<code>
块,并用{{
和}}
替换[[
和]]
。代码块可以有多个属性。
text.replace(/<code(?:\s+[^>]+)*>(?:.*?{{.+?}})*.*<\/code>/g, function(a) {
return(a.replace(/{{/g, "[[").replace(/}}/g, "]]"));
})