一個網友問:
<p class="a" style="font-size: 12pt; font-family: ""; color: red;">a</p>
如何替換成:
<p class="a" >a</p>
以為So easy,寫個正則匹配一下就OK了,
/style="[^"]*?"/g
結果生成結果如下:
<p class="a" "; color: red;">a</p>
原來忽略了style="中間有雙引號"
琢磨后,
改進了正則表達式:
var a=`<p class="a" style="font-size: 12pt; font-family: ""; color: red;">a</p>`
var reg4 = /style="[^=]*?"([(\s+\w+=)|>])/g
a.replace(reg4,'$1')
最終生成結果:
<p class="a" >a</p>
"和>之間還多了一個空格。基本上達到了要求。
原理,style后的內容非貪婪匹配,以一個=號或是>號結尾,后面那部分要用分組($1)替換回來
20190107,反饋有問題,改進:
var a=` <span style="font-family: "Times New Roman";" class="abc">`
var reg4 = /style="[^=>]*"([(\s+\w+=)|>])/g
a.replace(reg4,'$1')
var reg4 = /style="[^=>]*"([(\s+\w+=)|>])/g
a.replace(reg4,'$1')
把非貪婪匹配改為了貪婪匹配。