使用正则表达式将中断标签替换为其他中断标签集

时间:2019-04-12 14:21:56

标签: javascript html regex

我想知道JavaScript中是否可以替换

<br><br /> 

仅带有

的标签
<br /> 

使用正则表达式标记字符串吗?

代替

"Hello world."<br><br />"The light is bright."<br><br />

我想要类似的东西

"Hello world."<br />"The light is bright."<br />

2 个答案:

答案 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} },并用一个自动关闭的>替换运行。