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

发布于 2025-01-24 04:29:10 字数 379 浏览 3 评论 0原文

我有这个正则构造的模式,我将字符串变量传递到。这在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 + ")"
    ));

I have this regexp constructed pattern I'm passing a string variable to. This works perfectly in Chrome, but won't work in Safari.

Is there a way I might be able to convert this code to be compatible across browsers? Thank you!

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自控 2025-01-31 04:29:10

您可以使用

(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"),
      "[
amp;](" + n + ")"
    ));

(?!\ b \ w)负面lookahead如果下一个char是一个字char,则需要一个单词边界位置。否则,如果下一个char不是字char,则无需单词边界。

You can use

(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"),
      "[
amp;](" + n + ")"
    ));

The (?!\B\w) negative lookahead requires a word boundary position if the next char is a word char. Else, if the next char is not a word char, no word boundary is required.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文