在JavaScript中使用Regex全局删除<style>标记

时间:2017-08-22 11:22:26

标签: javascript regex

如何在JavaScript中使用正则表达式删除所有&lt; style&gt; &lt; style type =“text / css”&gt; &lt; / style&gt; &lt; style type =“text / css”/&gt; 。最终的结果就是没有样式标签的CSS。

&#xA;&#xA;

由于某些原因,下面的代码不起作用。

&#xA;&#xA ;
 <代码> str.replace(/&LT;风格\ b [^&LT;] *(:(小于\ /样式)的百分比抑制率^&LT;] *)*&LT; \ /风格&GT?! ; / GI, '');&#XA;  
&#XA;

3 个答案:

答案 0 :(得分:1)

根据您的问题,以下正则表达式代码应该足够

var regex = /((<style>)|(<style type=.+)|(<\/style>))/g;
var str = `<style>
 styles
</style>

<style type="text/css">
 styles
</style>`;
const subst = ``;

// The substituted value will be contained in the result variable
var result = str.replace(regex, subst);

console.log('Substitution result: ', result);

Demo Here

更新

查看更新后的正则表达式,它会删除样式以及其中的内容。

var regex = /((<style>)|(<style type=.+))((\s+)|(\S+)|(\r+)|(\n+))(.+)((\s+)|(\S+)|(\r+)|(\n+))(<\/style>)/g;
const str = `<style>
 styles
</style>

<style type="text/css">
 styles
</style>

non html content`;
var subst = ``;

// The substituted value will be contained in the result variable
var result = str.replace(regex, subst);

console.log('Substitution result: ', result);

Link

答案 1 :(得分:1)

首先,更正你的正则表达式:使用\ s +而不是\ b,在type =之后正确设置参数,添加标签变体

/((<style>)|(<style\s+type=(?:".*"|'.*')\/?)|(<\/style>))/gi

不要忘记会有两个引擎会读取你的字符串。正则表达式引擎是第二个。第一个是Javascript。例如,它要求逃避\

.replace(/((<style>)|(<style\s+type=(?:".*"|'.*')\\/?)|(<\\/style>))/gi,'');

test

答案 2 :(得分:0)

要捕获内联样式,您可以使用

style="(.*)"

<强> Demo online