js如何含有转义字符的字符串转成正则表达式呢?

如题,我有一个字符串str,我想将它转成正则,然后用于test、replace等。

我的做法是 let reg = new RegExp(str)

但这样不会将其中的特殊字符进行转义,如 ? => \?

请问有什么方法或者什么库能够完成对字符串中的特殊字符进行转义呢?

image.png

阅读 7.8k
2 个回答

MDN关于正则表达式的描述页面有个简单的函数可以处理这种情况:正则表达式

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
  //$&表示整个被匹配的字符串
}

先用这个函数把目标字符串中的特殊符号替换掉,然后再创建正则表达式:

const reg = new RegExp(escapeRegExp(str));
        const s = "ab?c";
        const reg = new RegExp(s.replace(/\?/g, "\\?"));
        reg.test("ac");
        reg.test("ab?c");
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题