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

ngynwnxp  于 2023-02-14  发布在  Java
关注(0)|答案(4)|浏览(125)

如何在JavaScript中使用正则表达式来删除所有<style><style type="text/css"></style><style type="text/css"/>,最终结果将是没有样式标签的CSS。
由于某种原因,下面的代码无法工作。

str.replace(/<style\b[^<]*(?:(?!<\/style)<[^<]*)*<\/style>/gi,'');
fdbelqdn

fdbelqdn1#

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

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

qcuzuvrc

qcuzuvrc2#

首先,修改正则表达式:使用\s+代替\B,正确设置type=后的参数,添加标记变量

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

别忘了有两个引擎会读取你的字符串,Regex引擎是第二个,第一个是Javascript,它要求转义\

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

test

6gpjuf90

6gpjuf903#

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

style="(.*)"
    • 一个
tzdcorbm

tzdcorbm4#

更新以删除内联样式:

.replace(/ style=("[^"]*")|('[^']*')/g, "");

相关问题