我想知道JavaScript中是否可以替换
<br><br />
仅带有
的标签<br />
使用正则表达式标记字符串吗?
代替
"Hello world."<br><br />"The light is bright."<br><br />
我想要类似的东西
"Hello world."<br />"The light is bright."<br />
答案 0 :(得分:1)
为此使用dom是最有效的方法。 dom是比regex更好的html解析器
const str = "Hello world.<br><br />The light is bright.<br><br />"
const div = document.createElement('div');
div.innerHTML = str;
const brs = div.getElementsByTagName('br');
for(let i = brs.length-1; i>=0; i--){
var el = brs[i],
prevSib = el.previousSibling;
if(prevSib.tagName ==='BR'){
el.remove()
}
}
console.log(div.innerHTML);
答案 1 :(得分:0)
我强烈建议使用DOM approach from charlietfl,但这是完整性的正则表达式选项:
const html = '"Hello world."<br><br />"The light is bright."<br><br />';
const fixed = html.replace(/(<br\s*\/?>)+/gi, "<br />");
console.log(fixed);
regex查找<br>
标签的运行,这些标签定义为不区分大小写的<br
,后跟任意数量的可选空格,可选的/
字符和右括号{{1} },并用一个自动关闭的>
替换运行。