某站有人問到此問題,記錄一下,以防之後要用ide
但願收到更多的解決方案,歡迎留言測試
/** * 刪除全部標籤屬性,支持忽略標籤 * @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> */
複製代碼