js 匹配的动态字符串中有特殊字符怎么办

2024-12-17  本文已影响0人  清风徐云去

在JavaScript中,正则表达式有一些特殊字符,如 .、*、+、?、^、$、[、]、{、}、(、)、| 和 \ 等,这些字符在正则表达式中具有特殊含义。要在正则表达式中使用这些字符的字面值,需要对它们进行转义,即在它们前面加上一个反斜杠 \。正常字符很容易处理,但如果是动态字符串呢,不确定匹配的字符串中有哪些特殊字符,也不确定特殊字符出现在哪个位置,就无法精准的在前面加反斜杠。

思路:

通过循环字符串,找到其中的特殊字符替换成特定的字符,然后通过正则匹配这个新组成的字符串,从而完成替换或其它操作。

// 需要匹配的特殊字符
const symbolArr = ['.', ',', '#', '!', '$', '%', '&', '*', '^', ';', ':', '{', '}', '=', '-', '_', '~', '(', ')', '`', '/'];
const filterSymbol => (txt) {
    let txtArr = Array.from(txt)
    let newTxtArr = []
    // 替换特殊符号,通过新的数组进行保存,否则无效 
    txtArr.forEach(item => {
        if (this.data.symbolArr.includes(item))
            item = '123' // 自定义的字符,只要避开特殊字符就行
        newTxtArr.push(item)
    })
    return newTxtArr.join('')
},

let srt = this.filterSymbol('xx市,高新工业区(水厂及管网扩建工程)');
let txt = '(水厂及管网扩建工程)'
txt = this.filterSymbol(txt)
let reg = new RegExp(txt, "g");
value = srt.replace(reg, "");
consle.log('value', value)
上一篇 下一篇

猜你喜欢

热点阅读