如何使用 javascript 交换字符串中的特定标签

How to swap specific tags in string using javascript

本文关键字:标签 字符串 何使用 javascript 交换      更新时间:2023-09-26

我有一个字符串,比如

str = "< p>line 1< br>< /p>< p>lin2< br>< /p>< h1>line 3< br>< /h1>";

我需要将< br>与它们紧接的下一个结束标签交换,在上述情况下,这些标签是< /p>< /p>< /h1>

所以最终需要的 STR 是:

finalStr = "< p>line 1< /p>< br>< p>lin2< /p>< br>< h1>line 3< /h1>< br>";

我尝试创建正则表达式但没有成功。谁能指导在这种情况下我如何创建正则表达式并仅使用 JS 将 br 的出现与下一个结束标签交换?PS:我在所有标签中添加了额外的空间,以便html编辑器可以忽略将它们作为标签读取

你可以试试:

"< p>line 1< br>< /p>< p>lin2< br>< /p>< h1>line 3< br>< /h1>".replace(/(< br>)(< '/['w'd]*>)/g,'$2$1')
//"< p>line 1< /p>< br>< p>lin2< /p>< br>< h1>line 3< /h1>< br>"

使用正则表达式进行 dom 操作不是一个好主意,相反,您可以尝试类似的东西

str = "<p>line 1<br></p><p>lin2<br></p><h1>line 3<br></h1>";
var div = document.createElement('div');
div.innerHTML = str;
var brs = div.querySelectorAll('br');
[].forEach.call(brs, function(br) {
  br.parentNode.parentNode.insertBefore(br, br.parentNode.nextSibling)
});
snippet.log(div.innerHTML)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

试试这个

var str = "< p>line 1< br>< /p>< p>lin2< br>< /p>< h1>line 3< br>< /h1>";
var vca = str.replace(/<'sbr>(<'s'/'w>)/,"$1<br>");