给定一个字符串,如何使用JavaScript删除所有';HTML标签';除了特定的';标签';(还有它的孩子们呢?)?
给定一个类似HTML的字符串(但实际上不是HTML),我如何使用JavaScript删除除特定“标记”(及其“子项”)之外的所有“HTML标记” 例如,如果我有以下字符串:给定一个字符串,如何使用JavaScript删除所有';HTML标签';除了特定的';标签';(还有它的孩子们呢?)?,javascript,ecmascript-6,Javascript,Ecmascript 6,给定一个类似HTML的字符串(但实际上不是HTML),我如何使用JavaScript删除除特定“标记”(及其“子项”)之外的所有“HTML标记” 例如,如果我有以下字符串: '<p><span>Sample data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><strong>hello world<
'<p><span>Sample data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><strong>hello world</strong><math><msqrt><mo>x</mo></msqrt></math></div></p>'
“样本数据:y你好世界x”
我只想保留原始文本和“数学标记”(以及每个“数学标记”中的所有内容),我该怎么做呢
const html = '<p><span>Sample data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><strong>hello world</strong><math><msqrt><mo>x</mo></msqrt></math></div></p>';
const result = stripNonSpecifiedHTML(html, 'math');
// expected result:
// 'Sample data: <math><msqrt><mo>y</mo></msqrt></math>hello world<math><msqrt><mo>x</mo></msqrt></math>'
function stripNonSpecifiedHTML(html, tagNameToKeep) {
// ...
}
consthtml='示例数据:yhelloworldx;
const result=stripNonsspecifiedHTML(html,“数学”);
//预期结果:
//'样本数据:yhello worldx'
函数stripNonsspecifiedHTML(html,tagnameToKep){
// ...
}
虽然不是html
,但此字符串可以解析为xml
const html = '<p><span>Initial data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><math><msqrt><mo>x</mo></msqrt></math></div></p>';
let parser = new DOMParser(),
xmlDoc = parser.parseFromString(html, 'text/xml');
虽然不是
html
,但此字符串可以解析为xml
const html = '<p><span>Initial data: <math><msqrt><mo>y</mo></msqrt></math></span> <div><math><msqrt><mo>x</mo></msqrt></math></div></p>';
let parser = new DOMParser(),
xmlDoc = parser.parseFromString(html, 'text/xml');
您可以按照以下思路做一些事情:
html.split('<math>')[1].split('</math>')[0]
html.split(“”)[1]。split(“”)[0]
您可以按照以下方式做一些事情:
html.split('<math>')[1].split('</math>')[0]
html.split(“”)[1]。split(“”)[0]
它看起来很糟糕,但它可以工作(有一些限制):
- 将字符串按
和 - 删除每秒钟元素中的所有html标记
- 在每秒钟的元素周围添加
和 - 将数组重新连接到字符串中
consthtml=
“初始数据:yhello worldx”
var text=html.split(“”)
.map(t=>t.split(“”)).flat()
.map((t,i)=>{return(i%2==0)?t.replace(//g',):t})
.map((t,i)=>{return(i%2==0)?t:''+t+''})
.加入(“”);
console.log(文本);
//输出:初始数据:y hello worldx
它看起来很糟糕,但效果很好(有一些限制):
- 将字符串按
和 - 删除每秒钟元素中的所有html标记
- 在每秒钟的元素周围添加
和 - 将数组重新连接到字符串中
consthtml=
“初始数据:yhello worldx”
var text=html.split(“”)
.map(t=>t.split(“”)).flat()
.map((t,i)=>{return(i%2==0)?t.replace(//g',):t})
.map((t,i)=>{return(i%2==0)?t:''+t+''})
.加入(“”);
console.log(文本);
//输出:初始数据:y hello worldx
请参见。请参见。我认为您可以使用text/html
使用HTML5的解析进行解析?@loganfsmyth您可以做到这一点,它应该可以工作。我只是想,如果HTML解析器不喜欢其中的一些标记,XML可能会更好。我认为您可以使用text/HTML
来使用HTML5的解析进行解析?@loganfsmyth您可以这样做,它应该可以工作。我只是想,如果HTML解析器不喜欢某些标记,XML可能会更好。