如何使用RegEx移除HTML字符串标签并拼接名称避免末尾多余&
现有代码修复方案
你当前输出末尾多余&是因为最后一个姓名后也跟着<br>标签,替换后就会在末尾多出&,只需在现有逻辑最后加一步收尾清理即可:
let mytext = '<div class="ExternalClassBE95E28C1751447DB985774141C7FE9C"><p>Tina Schmelz<br></p><p>Sascha Balke<br></p></div>'; mytext = mytext.replaceAll(/<br>/gi, ' & ') .replaceAll(/<.*?>/gi, '') .trim() .replace(/\s*&$/, ''); // 匹配末尾的&和前置空白直接移除 console.log(mytext) // 输出:Tina Schmelz & Sascha Balke
更优的一行正则实现
直接提取所有标签之间的纯文本姓名再拼接,从根源上避免末尾多余符号问题,适配任意数量的姓名:
const mytext = '<div class="ExternalClassBE95E28C1751447DB985774141C7FE9C"><p>Tina Schmelz<br></p><p>Sascha Balke<br></p></div>'; const result = mytext.match(/(?<=>)[^<>]+(?=<)/g).filter(item => item.trim()).join(' & '); console.log(result); // 输出:Tina Schmelz & Sascha Balke
正则逻辑说明:匹配所有处于>和<之间的非标签字符,过滤掉空白内容后直接用&拼接,不用提前替换<br>标签,兼容性更强。
更稳妥的DOM解析方案(浏览器环境)
正则处理HTML存在一定边界风险,如果是运行在浏览器环境,直接用DOM解析不会出错:
const mytext = '<div class="ExternalClassBE95E28C1751447DB985774141C7FE9C"><p>Tina Schmelz<br></p><p>Sascha Balke<br></p></div>'; const tempDiv = document.createElement('div'); tempDiv.innerHTML = mytext; const result = tempDiv.textContent.trim().split(/\n/).map(item => item.trim()).filter(Boolean).join(' & '); console.log(result); // 输出:Tina Schmelz & Sascha Balke
内容的提问来源于stack exchange,提问作者hiroimono
相关产品推荐
相关产品推荐

