将 RegExp 构造函数转换为与 Safari 兼容

Converting a RegExp constructor to be Safari-compatible

我有这个正则表达式构造的模式,我正在将一个字符串变量传递给它。这在 Chrome 中完美运行,但在 Safari 中不起作用。

有没有办法可以将此代码转换为跨浏览器兼容?谢谢!

(e = e
  .split(new RegExp("(?<!\w)" + t[l] + "(?!\w)(?![^\[\]]*\])", "gm"))
  .join(n)),
  1 == caseinsensitive &&
    (e = e.replace(
      new RegExp("(?<!\w)" + t[l] + "(?!\w)(?![^\[\]]*\])", "gmi"),
      "[$&](" + n + ")"
    ));

您可以使用

(e = e
  .split(new RegExp("(?!\B\w)" + t[l] + "(?!\w)(?![^\][]*])", "g"))
  .join(n)),
  1 == caseinsensitive &&
    (e = e.replace(
      new RegExp("(?!\B\w)" + t[l] + "(?!\w)(?![^\][]*])", "gi"),
      "[$&](" + n + ")"
    ));

如果下一个字符是单词字符,(?!\B\w) 否定先行需要单词边界位置。否则,如果下一个字符不是单词字符,则不需要单词边界。