0

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

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

但是这个正则表达式的输出很奇怪

输出 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>
4

2 回答 2

1

group 2你的里面没有regex,所以$2被当作$2唯一的,没有替换它。

你需要使用$1: -

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

请参阅http://fiddle.re/v0jb上的演示

于 2013-01-29T06:52:51.547 回答
1

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

str = str.replace(/<div>([\w\W]*?)<\/div>/gi, '<p>$1</p>');
于 2013-01-29T07:19:17.167 回答