Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript交换字符串中的特定标记_Javascript_Html_Regex - Fatal编程技术网

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

如何使用javascript交换字符串中的特定标记,javascript,html,regex,Javascript,Html,Regex,我有一根像 str = "< p>line 1< br>< /p>< p>lin2< br>< /p>< h1>line 3< br>< /h1>"; str=“第1行第2行第3行”; 我需要将与它们的下一个结束标记交换,在上述情况下,它们是,和 因此,所需的最终str是: finalStr = "< p>line 1< /p>< br>< p

我有一根像

str = "< p>line 1< br>< /p>< p>lin2< br>< /p>< h1>line 3< br>< /h1>";
str=“第1行
第2行

第3行

”;

我需要将

与它们的下一个结束标记交换,在上述情况下,它们是

因此,所需的最终str是:

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


第2行


第3行


”;
我尝试创建正则表达式,但没有成功。在这种情况下,谁能指导我如何创建正则表达式,并仅使用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>"
“第1行
第2行

第3行

”。替换(/(
)(<\/[\w\d]*>)/g,“$2$1”) //“第1行


第2行


第3行


您可以尝试:

"< 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>"
“第1行
第2行

第3行

”。替换(/(
)(<\/[\w\d]*>)/g,“$2$1”) //“第1行


第2行


第3行



使用正则表达式进行dom操作不是一个好主意,相反,您可以尝试以下方法

str=“第1行

第2行

第3行
”; var div=document.createElement('div'); div.innerHTML=str; var brs=div.querySelectorAll('br'); []forEach.call(brs,函数(br){ br.parentNode.parentNode.insertBefore(br,br.parentNode.nextSibling) }); snippet.log(div.innerHTML)

使用正则表达式进行dom操作不是一个好主意,相反,您可以尝试以下方法

str=“第1行

第2行

第3行
”; var div=document.createElement('div'); div.innerHTML=str; var brs=div.querySelectorAll('br'); []forEach.call(brs,函数(br){ br.parentNode.parentNode.insertBefore(br,br.parentNode.nextSibling) }); snippet.log(div.innerHTML)

试试这个

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>");
var str=“第1行
第2行

第3行

”; var vca=str.replace(/()/,“$1
”);

试试这个

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>");
var str=“第1行
第2行

第3行

”; var vca=str.replace(/()/,“$1
”);

谢谢,我不太了解regex,这就是为什么需要快速帮助的原因。我将了解有关创建regexthanks的更多信息,我不太了解regex,这就是为什么需要快速帮助的原因。我将了解有关创建regex的更多信息。我同意您关于dom操作的看法,但实际上我的意图不是要影响dom,我同意你关于DOM操作的看法,但实际上目的并不是要影响DOM,而是要用DOM元素创建一些字符串,保持DOM的原样。