我有一个HTML文档,我们使用第三方应用程序生成。我们遇到的问题是它为HTML元素中的样式创建了覆盖。因此,我们最终得到的结构与此类似:
<p class="text ParaOverride-1">Hey</p>
<p class="text ParaOverride-2">now</p>
<p class="text ParaOverride-3">brown</p>
<p class="text ParaOverride-4">cow</p>
<p class="text ParaOverride-5">milk.</p>
我想要这两点之间的所有文本 - 以便我可以随后用空格替换它们以获得以下输出:
<p class="text">Hey</p>
<p class="text">now</p>
<p class="text">brown</p>
<p class="text">cow</p>
<p class="text">milk.</p>
起始标记是p class =“,结束标记将是p元素开头部分的结束。
答案 0 :(得分:2)
在vi
下,替换内容如下所示:
:%s/<p class="text \([^"]*\)"/<p class="text
答案 1 :(得分:1)
这将完成任务
var a=document.body.innerHTML;
document.body.innerHTML=a.replace(/\s[a-zA-Z]+\-\d/g,'');
&#13;
<body>
<p class="text ParaOverride-1">Hey</p>
<p class="text ParaOverride-2">now</p>
<p class="text ParaOverride-3">brown</p>
<p class="text ParaOverride-4">cow</p>
<p class="text ParaOverride-5">milk.</p>
<p class="text ParaOverride-1">Hey</p>
</body>
&#13;
但使用正则表达式解析HTML是一种糟糕的方法。
所以,另一种方法是
您要删除text
以外的其他类。
因此,迭代元素并删除另一个类。
检查以下内容
document.querySelectorAll('p').forEach( (x,i) => x.classList.remove("ParaOverride-"+(i+1)));
console.log(document.body.innerHTML);
&#13;
<body>
<p class="text ParaOverride-1">Hey</p>
<p class="text ParaOverride-2">now</p>
<p class="text ParaOverride-3">brown</p>
<p class="text ParaOverride-4">cow</p>
<p class="text ParaOverride-5">milk.</p>
<p class="text ParaOverride-1">Hey</p>
</body>
&#13;