删除div标签并用br标签替换其中一些标签

时间:2015-08-21 11:10:41

标签: javascript jquery

我有下一个文字:

fffffff<div>hhhhh</div><div>kh</div>

1)我只想删除div标签。

2)如果div标签不在字符串的第一个字符串中而不在字符串的末尾,请将其替换为<br/>

3)</div><div>应替换为一个div。

的示例:

1)fffffff<div>hhhhh</div><div>kh</div> - &gt; fffffff<br/>hhhhh<br/>kh

字符串末尾的</div>标记未被替换,因为它位于字符串的末尾。

2)<div>fffffff</div><div>hhhhh</div><div>kh</div> - &gt; fffffff<br/>hhhhh<br/>kh

你可以假设没有类似的文字:

<div><div><div><div><div></div><div>text</div><div></div>

查找所有html标记:

replace(/<[^>]*>/g, "<br/>")

但是它会用<br/>

替换所有的html标签

2 个答案:

答案 0 :(得分:2)

您可以使用 html() replace()

&#13;
&#13;
$('.c').html(function(i, v) {
  return v.replace(/^([\w\s]+)(<div>.*?<\/div>)/, '$1<br/>$2')
    //-^- For first div
    .replace(/<div>(.*?)<\/div>\s*$/, '$1')
    //-^- For removing div at ending
    .replace(/<div>(.*?)<\/div>/g, '$1<br/>')
    //-^-For removing other div
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class=c>
  <div>fffffff</div>
  <div>hhhhh</div>
  <div>kh</div>
</div>
<div class=c>
  fffffff
  <div>hhhhh</div>
  <div>kh</div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

符合您的示例:

var str = "fffffff<div>hhhhh</div><div>kh</div>";
if(str.indexOf("<div>") === 0){
    str = str.substring(5);
}
if(str.slice(-6) === "</div>"){
    str = str.substring(0,str.length - 6);
}
str = str.replace(/<\/div><div>/g,"<br/>");
str = str.replace(/<div>/g,"<br/>");

但为了匹配你的第三条规则你应该改变

str = str.replace(/<\/div><div>/g,"<br/>");

通过

str = str.replace(/<\/div><div>/g,"<div>");