首页 > 解决方案 > 如何使用 RegEx 从 Html 字符串中删除 html 标签?

问题描述

我有一个包含名称的 HTML 字符串:

<div class=\"ExternalClassBE95E28C1751447DB985774141C7FE9C\"><p>Tina Schmelz<br></p><p>Sascha Balke<br></p></div>

而且,我想删除所有 html 标签并在名称之间放置“&”,但不要放在最后一个标签的末尾,例如:

Not desired: Tina Schmelz & Sascha Balke &
Desired:     Tina Schmelz & Sascha Balke

我使用了正则表达式和字符串替换属性。

我可以通过使用<br>' & ' 替换所有标签来做到这一点,然后使用以下代码删除所有 html 标签:

let mytext = '<div class=\"ExternalClassBE95E28C1751447DB985774141C7FE9C\"><p>Tina Schmelz<br></p><p>Sascha Balke<br></p></div>';
mytext = mytext.replaceAll(/<br>/gi, ' & ');
mytext = mytext.replaceAll(/<.*?>/gi, ''); 

console.log(mytext)

我的问题:如何删除最后一个'&'?或者,有没有人知道更好的 RegEx 可以在一行中完成所有内容?:)

标签: javascriptregexstring

解决方案


您可以用您已经编写的代码替换所有标签;然后使用split函数来划分名称并加入一个以插入&所需的点。

const myTextParsed = []

let myText = '<div class=\"ExternalClassBE95E28C1751447DB985774141C7FE9C\"><p>Tina Schmelz<br></p><p>Sascha Balke<br></p></div>';

let myTextArray = myText.split('<br>'); 

myTextArray = myTextArray.map(ta => {
  const temp = ta.replaceAll(/<.*?>/gi, '')
  if (temp.length > 0) { myTextParsed.push(temp) }  
});

myText = myTextParsed.join(' & ');

console.log(myText)


推荐阅读