如果div没有任何样式属性,如何将DIV标签转换为P标签?

时间:2013-01-29 06:26:59

标签: javascript jquery html regex

我正在使用文本编辑器,当页面呈现时,我正在尝试将所有<div>标记转换为<p>标记,如果标记中没有使用以下javascript正则表达式的样式属性。 (最后得到html)

// if <div> has any attribute then do not convert in <p> tag
str = str.replace(/<div>([\w\W]*?)<\/div>/gi, '<p>$2</p>');

但是这个regx的输出很奇怪

输出HTML:注意结尾处的意外'<p>$2</p>',Zoltan和祝贺文字丢失了。

<br>
@abc Semantics
<br>
<a href="http://abc.com">http://abc.com</a>
<br>
xxxx5555
<br>
Mail address:
<a target="blank" href="/abc-abc-semantics">@abc</a>
<br>
<br>
<b>
Sub:
</b>
<br>
<br>
Hi abc,&nbsp;<p>$2</p><p>$2</p>;<p>$2</p><p>$2</p>

//我正在应用regx的原始HTML

<br> 
  @abc Semantics 
<br> 
  <a href="http://abc.com">http://abc.com</a> 
<br> 
  xxxx5555 
<br> 
  Mail address: <a href="/abc-abc-semantics" target="blank">@abc</a> 
<br> 
<br> 
  <b> Sub: </b> 
<br> <br> 
Hi abc,&nbsp;
<div><br></div>

<div>congratulations :D</div>

<div><br></div>
;
<div>Zoltan</div>

2 个答案:

答案 0 :(得分:1)

group 2中没有regex,因此$2仅被视为$2,并且没有替换它。

您需要使用$1: -

str = str.replace(/<div>([\w\W]*?)<\/div>/gi, '<p>$1</p>');

请参阅http://fiddle.re/v0jb

上的演示

答案 1 :(得分:1)

尝试使用$1而非$2,因为正则表达式中没有第2组。
所以新代码将是:

str = str.replace(/<div>([\w\W]*?)<\/div>/gi, '<p>$1</p>');