刪除標籤的屬性(方案收集)

背景

某站有人問到此問題,記錄一下,以防之後要用

目的

但願收到跟多的解決方案,歡迎留言
/**
     * 刪除全部標籤屬性,支持忽略標籤
     * @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
// 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'])
    // 測試經過
相關文章
相關標籤/搜索