为了账号安全,请及时绑定邮箱和手机立即绑定

用正则判断一个小条件,帮帮忙

用正则判断一个小条件,帮帮忙

撒科打诨 2019-03-02 12:40:41
问题:把HTML标签中的src style controls属性以外的属性全部替换成空, **并且** style里面的属性,只留下 background 和 color 两个style属性 ,其他也全部替换成空,小弟实在不会,先谢谢### 问题描述问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)你期待的结果是什么?实际看到的错误信息又是什么?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

为了保留拓展性,大概思路可以这样。

/*
  reserveAttr 需要保留的属性,null表示全保留
  reserveStyle 需要保留的style中的具体样式,null表示全保留
*/function formateHtml(str="", reserveAttr=[], reserveStyle=[]){  return str.replace(/(<[\w|-]+)(.*?)(\/?>)/ig,(...arg)=>arg[1] + arg[2].replace(/([\w|-]+)((=)(['|"])(.*?)(['|"]))?/ig,(...attr)=>!reserveAttr || reserveAttr.includes(attr[1].toLowerCase()) ? (['style'].includes(attr[1].toLowerCase()) ? (attr[1] + attr[3] + attr[4] + attr[5].replace(/([\w|-]+)\s*:[^;]+;?/ig,(...style)=>!reserveStyle || reserveStyle.includes(style[1].toLowerCase()) ? style[0] : '') + attr[6]) : attr[0] ) : '') + arg[3]);
}


//测试例子var str = `<a> </a><img :src="imgSrc" draggable style="background:red;width:500;color:blue"/>文本<img src="src1" style="color:red;" /><IMG :STYLE="SRC2" /><el-input v-Model="val"></el-input><bb src="bbsrc" disabled >bb内容</bb>`;console.log(formateHtml(str,['style','src','controls'],['background','color']));


查看完整回答
反对 回复 2019-03-02
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

//过滤属性//jsvar reg = '/<([A-Za-z]+)[^>]+((class|style|controls)=".*?")([^>]+)?>/g';
str.replace(reg,'<$1 $2>');//php$reg = '/<([A-Za-z]+)[^>]+((class|style|controls)=".*?")([^>]+)?>/';echo htmlspecialchars((preg_replace_callback($reg, function ($matches) {  return '<' . $matches[1] . ' ' . $matches[2] . '>';
}, $str)));

过滤stylevar reg = /style="(?:((?:background|color)[^;"]+;)+)?((?:(?!background|color)[^;"]+;)+)?(?:((?:background|color)[^;"]+;)+)?((?:(?!background|color)[^;"]+;)+)?/g;
str.replace(reg,function(){
  return 'style="'+(arguments[1] || '')+(arguments[3] || '');
});


查看完整回答
反对 回复 2019-03-02
  • 2 回答
  • 0 关注
  • 460 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信