前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >删除标签的属性(方案收集)

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

作者头像
random_wang
发布2019-09-10 19:37:41
1.5K0
发布2019-09-10 19:37:41
举报
文章被收录于专栏:randomrandom

背景

某站有人问到此问题,记录一下,以防以后要用

目的

希望收到跟多的解决方案,欢迎留言

代码语言:javascript
复制
    /**
     * 删除所有标签属性,支持忽略标签
     * @param {*} str 字符串文本
     * @param {*} ignoreArr 要忽略的标签
     */
    function deleteAllTagAttr(str, ignoreArr) {
      if (typeof str !== 'string') return
      let  reg = new RegExp(`<(?!(${ignoreArr.join('|')}))(.*?)(?:>|\/>)`, 'gi')
        return str.replace(reg, mstr => {
            return mstr.replace(/(<[A-z]+)(.*)?(\/?>)/gi, '$1$3')
        })
    }
    
    /**
     * 删除指定标签属性, 
     * @param {*} str 字符串文本
     * @param {*} tagArr 要删除属性的标签
     */
    function deleteTagAttr(str, tagArr) {
      if (typeof str !== 'string') return
      let  reg = new RegExp(`<(?:(${tagArr.join('|')}))(.*?)(?:>|\/>)`, 'gi')
        return str.replace(reg, mstr => {
            return mstr.replace(/(<[A-z]+)(.*)?(\/?>)/gi, '$1$3')
        })
    }
    
    
    
    
    
    // 测试文本
    let test = `
    <div class="seach-nav-c goods-top-seach"></div>
    <img src="http://1907/10172941e5ft.jpg"  alt="" class="seach-ad-img" />
    <video src="ssss" class="sss"></video>
    <audio src="ssss" class="sss"></audio>
    <a href="ssss" >fdsf </a>
    `
    
    console.log(deleteAllTagAttr(test, ['img','video','audio']))
    /*打印结果
      <div></div>
      <img src="http://1907/10172941e5ft.jpg"  alt="" class="seach-ad-img" />
      <video src="ssss" class="sss"></video>
      <audio src="ssss" class="sss"></audio>
      <a>fdsf </a>
     */
    
     console.log(deleteTagAttr(test, ['img']));
    /**打印结果
      <div class="seach-nav-c goods-top-seach"></div>
      <img>
      <video src="ssss" class="sss"></video>
      <audio src="ssss" class="sss"></audio>
      <a href="ssss" >fdsf </a>
     */

删除指定标签属性 收集 +1

代码语言:javascript
复制
    // replace 一次无需二次调用replace
    function delAttr(str, tagArr) {
      if (typeof str !== 'string') return
      let reg = new RegExp(`<(?=(${tagArr.join('|')})\\b)(.*?)(?=\>|\/>)`, 'gi')
      return str.replace(reg, '<$1 ')
    }
    
    // 第一参数 操作字符串
    // 第二参数 要过滤的标签列表
    let res = delAttr(test, ['div', 'a', 'input'])
    // 测试通过
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 目的
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档