new RegExp对象第一参数

334 阅读1分钟

刚好有个业务需要实现根据输入的字符串搜索页面内容中符合的字符串并进行替换,此时需要先把正则表达式的特殊字符,比如\,^等先进行替换,new RegExp才能正确匹配到输入的特殊字符,除转义字符外的字符替换可以用以下方法实现

// 过滤正则表达式特殊字符,转义字符\除外

splitRegCode (str, reg) {

return str ? str.replace(reg || /[.+^$*?{}[]()|,=!]/g, function (a, b) {

if (b) {

return a

} else {

return {

'.': '\\\.',

'+': '\\\+',

'^': '\\\^',

':': '\\\\\\',

'*': '\\\*',

'?': '\\\?',

'{': '\\\{',

'}': '\\\}',

'[': '\\\[',

']': '\\\]',

'(': '\\\(',

')': '\\\)',

'|': '\\\|',

',': '\\\,',

'=': '\\\=',

'!': '\\\!'

}[a]

}

}) : ''

},