正则表达式匹配 带有特殊字符的字符串失败(特殊字符指: . ? + $ ^ [ ] ( ) { } | \ / )

特殊字符有: . ? + $ ^ [ ] ( ) { } | \ /
匹配不成功的示例:

const str = '(hehe)43'
const reg = new RegExp(str,'gi')  // reg : /(hehe)43/ 括号未做转义处理
console.log(reg.test(str))   // 结果是 false

匹配不成功的原因:str 中的字符串中的特殊字符没有做转义处理

如果想匹配成功,就要先对str中的特殊字符做转义处理
匹配成功的示例:

const str = '(hehe)43'
// 对字符串中的特殊字符做转义处理
const str = str.replace(/([*.?+$^(){}|\\/])/g, '\\$1')  // str : "\(hehe\)43"
const reg = new RegExp(str,'gi') // reg : /\(hehe\)43/  括号已做转义处理
console.log(reg.test(str))   // 结果是 true

猜你喜欢

转载自blog.csdn.net/weixin_46611729/article/details/111375769
今日推荐