如何编写正则表达式来删除除type =“A”,type =“1”和type =“I”之外的所有html属性?

时间:2014-08-05 14:33:19

标签: html regex

除了type =“A”,type =“1”和type =“I”属性外,如何使用正则表达式删除所有html属性?

以下html:

<ol type="A" lang="en-CA" style="margin-bottom: 0in; line-height: 100%">
  <li><span>Text</span></li>
  <li><span>More text</span></li>
</ol>
<ol type="I" style="font-weight: bold;">
  <li><span>Text</span></li>
  <li><span>More text</span></li>
</ol>

应该成为:

<ol type="A">
  <li><span>Text</span></li>
  <li><span>More text</span></li>
</ol>
<ol type="I">
  <li><span>Text</span></li>
  <li><span>More text</span></li>
</ol>

1 个答案:

答案 0 :(得分:0)

如果您更喜欢使用正则表达式,请尝试以下

(<[a-z]+\stype="[A|I|1]")(?:[^>]+)? 

的更换:

$1

输入:

<ol type="A" lang="en-CA" style="margin-bottom: 0in; line-height: 100%">
  <li type="A" s="something"><span>Text</span></li>
  <li><span>More text</span></li>
</ol>
<ol type="I" style="font-weight: bold;">
  <li><span>Text</span></li>
  <li><span>More text</span></li>
</ol>
<ol type="1" style="font-weight: bold;">
  <li type="I" another="attribute"><span>Text</span></li>
  <li><span>More text</span></li>
</ol>

输出:

<ol type="A">
  <li type="A"><span>Text</span></li>
  <li><span>More text</span></li>
</ol>
<ol type="I">
  <li><span>Text</span></li>
  <li><span>More text</span></li>
</ol>
<ol type="1">
  <li type="I"><span>Text</span></li>
  <li><span>More text</span></li>
</ol>

使用JavaScript的简单用法

var s = '<ol type="A" lang="en-CA" style="margin-bottom: 0in; line-height: 100%">';
var p = /(<[a-z]+\stype="[A|I|1]")(?:[^>]+)?/g
console.log(s.replace(p, '$1'));

输出:

<ol type="A">

Demo