我有一个函数,可以在文本元素中显示HTML标记。
stripChar: function stripChar(string) {
string = string.replace(/<\/?[^>]+(>|$)/g, "")
string = string.trim()
string = string.replace(/(\n{2,})/gm,"\n\n");
string = string.replace(/…/g,"...")
string = string.replace(/ /g,"")
let changeencode = entities.decode(string);
return changeencode;
}
这对我来说非常有用,但是我有了一个新的需求,我很难确定我应该从哪里开始重构上面的代码。我仍然需要去掉上面的内容,但我有两个例外;
<ul><li>
,我需要处理这些项目,以便它们仍然显示为一个要点<a>
,让我单独处理。虽然该功能是伟大的通用标签替换,但它的灵活性较低,我以上的需求。
发布于 2020-09-05 16:30:32
你可以用
stripChar: function stripChar(string) {
string = string.replace(/ |<(?!\/?(?:li|ul|a)\b)\/?[^>]+(?:>|$)/g, "");
string = string.trim();
string = string.replace(/\n{2,}/g,"\n\n");
string = string.replace(/…/g,"...")
let changeencode = entities.decode(string);
return changeencode;
}
主要变化如下:
.replace(/ /g,"")
被移到第一个replace
replace
现在与新的regex模式一起使用,在这个模式中,li
、ul
和a
标记被排除在匹配中,使用的是负前瞻性(?!\/?(?:li|ul|a)\b)
。https://stackoverflow.com/questions/63751429
复制相似问题