我有非常大的 HTML,如果将其解析为 DOM 树,将花费很多时间,因此尽管“正确”,但此选项不可用。我需要删除所有内部标记样式声明。
有一个正则表达式似乎在大多数情况下都有效:
> re
/\sstyle\s*=(\"[^\">]*\"*|\'[^\'>]*\'*|[^\s>]*)/gi
> test
[ '<img src="some.jpg" style="width:auto" width="50" height="60">',
'<img style=\'width:auto\'>',
'<img style=\'width:auto>',
'<img style=width:auto>',
'<div style=\'\'>',
'<div style=\'background-image:url(\'paper.gif\');\'',
'<div style=\'background-image:url(\\\'paper.gif\\\');\'' ]
> test.forEach(function(t){console.log(t.replace(re,''))})
<img src="some.jpg" width="50" height="60">
<img>
<img>
<img>
<div>
<divpaper.gif');'
<divpaper.gif\');'
如您所见,如果值部分中有重复的引号,无论是否有适当的转义,正则表达式都不起作用。有什么想法可以改进吗?