我有一些包含HTML的文本(要在浏览器中呈现),以及包含<>
的任意字符串。有没有办法逃避这些任意标签,但保留HTML?如果它有帮助,则被解析的HTML受到严格管理,并且只允许一部分标记(b
,i
,strong
,br
)
例如。鉴于此文:
<strong>Foobar</strong> <some other whatever>
我需要
<strong>Foobar</strong> <some other whatever>
答案 0 :(得分:1)
一个便宜的选择是用占位符替换<>
,然后在“好”的上下文中恢复它们:
allowedTags = ['strong', 'em', 'p'];
text = '<strong>Foobar</strong> <some other whatever> <b>??</b> <em>hey</em>'
text = text
.replace(/</g, '\x01')
.replace(/>/g, '\x02')
.replace(new RegExp('\x01(/?)(' + allowedTags.join('|') + ')\x02', 'g'), "<$1$2>")
.replace(/\x01/g, '<')
.replace(/\x02/g, '>')
console.log(text)
一个不那么便宜但更正确的解决方案是使用(事件驱动的)html解析器,并在你去的时候逃避不需要的东西。