如何在JavaScript中使用正则表达式删除所有< style>
,< style type =“text / css”>
,< / style>
,< style type =“text / css”/>
。最终的结果就是没有样式标签的CSS。
由于某些原因,下面的代码不起作用。
&#xA;&#xA ;<代码> str.replace(/&LT;风格\ b [^&LT;] *(:(小于\ /样式)的百分比抑制率^&LT;] *)*&LT; \ /风格&GT?! ; / GI, '');&#XA; 代码>&#XA;
答案 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);
更新
查看更新后的正则表达式,它会删除样式以及其中的内容。
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);
答案 1 :(得分:1)
首先,更正你的正则表达式:使用\ s +而不是\ b,在type =之后正确设置参数,添加标签变体
/((<style>)|(<style\s+type=(?:".*"|'.*')\/?)|(<\/style>))/gi
不要忘记会有两个引擎会读取你的字符串。正则表达式引擎是第二个。第一个是Javascript。例如,它要求逃避\
。
.replace(/((<style>)|(<style\s+type=(?:".*"|'.*')\\/?)|(<\\/style>))/gi,'');
答案 2 :(得分:0)