当前位置: 首页 > 后端技术 > Node.js

删除标签的属性(方案合集)

时间:2023-04-03 17:30:23 Node.js

背景有人在网站上问过这个问题,记录一下,以备日后收到更多适合自己目的的解决方案,欢迎留言/***删除所有标签属性,支持忽略标签*@param{*}strstringText*@param{*}ignoreArr要忽略的标签*/functiondeleteAllTagAttr(str,ignoreArr){if(typeofstr!=='string')returnletreg=newRegExp(`<(?!(${ignoreArr.join('|')}))(.*?)(?:>|\/>)`,'gi')returnstr.replace(reg,mstr=>{returnmstr.replace(/(<[A-z]+)(.*)?(\/?>)/gi,'$1$3')})}/***删除指定标签属性,*@param{*}strstringtext*@param{*}tagArr要删除属性的标签*/functiondeleteTagAttr(str,tagArr){if(typeofstr!=='string')returnletreg=newRegExp(`<(?:(${tagArr.join('|')}))(.*?)(?:>|\/>)`,'gi')returnstr.replace(reg,mstr=>{returnmstr.replace(/(<[A-z]+)(.*)?(\/?>)/gi,'$1$3')})}//测试文本lettest=`<图像src="http://1907/10172941e5ft.jpg"alt=""class="seach-ad-img"/>fdsf`console.log(deleteAllTagAttr(test,['img','video','audio']))/*打印结果

fdsf*/console.log(deleteTagAttr(test,['img']));/**打印结果
fdsf*/删除指定标签属性集合+1//替换一次不调用替换两次functiondelAttr(str,tagArr){if(typeofstr!=='string')returnletreg=newRegExp(`<(?=(${tagArr.join('|')})\\b)(.*?)(?=\>|\/>)`,'gi')returnstr.replace(reg,'<$1')}//第一个参数操作字符串//第二个参数待过滤标签列表letres=delAttr(test,['div','a','input'])//测试通过