在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 正則表達(dá)匹配敏感詞數(shù)組中還有符號(hào)的并予以轉(zhuǎn)義

正則表達(dá)匹配敏感詞數(shù)組中還有符號(hào)的并予以轉(zhuǎn)義

小弟最近在項(xiàng)目中使用較多的正則,才悔悟認(rèn)知正則的重要性,遇到一個(gè)這樣的問題

let str = "+VX 測(cè)試文本測(cè)試文本加哈哈"
let arr = ['+VX','加+']
arr.forEach((item,index) => {
    var pattern = new RegExp('\\'+arr[index],"gi");
    str = str.replace(pattern, match => {
        return '<span style="color:red">'+match+'</span>'
    })
})
console.log(str)

敏感詞中有+VX我用了兩個(gè)轉(zhuǎn)義字符做處理,是否合理
還有敏感詞中加+但是正文中的被匹配到了,這個(gè)如何解決

回答
編輯回答
大濕胸

那是因?yàn)槟銢]有對(duì)"加"后面的"+"好進(jìn)行轉(zhuǎn)義

//轉(zhuǎn)義字符串中的元字符
function escapeMetacharacterOfStr(input) {
            return input.replace(/[-$^()*+.\[\]|\\?{}]/gm, "\\$&");
        }
let str = "+VX 測(cè)試文本測(cè)試文本加哈哈"
let arr = ['+VX','加+']
arr.forEach((item,index) => {
    var pattern = new RegExp(escapeMetacharacterOfStr(arr[index]),"gi");
    str = str.replace(pattern, match => {
        return '<span style="color:red">'+match+'</span>'
    })
})
console.log(str)
2017年5月21日 00:11
編輯回答
孤慣
為啥不直接寫數(shù)組里
    let str = "+VX 測(cè)試文本測(cè)試文本加哈哈";
    let arr = [/\+VX/, /加\+/];
    arr.forEach((item, index) => {
      str = str.replace(item, function(match) {
        return '<span style="color:red">' + match + '</span>'
      })
    })
    console.log(str)
2017年6月19日 12:05