【问题标题】:Works in Chrome, but breaks in Safari: Invalid regular expression: invalid group specifier name /(?<=\/)([^#]+)(?=#*)/在 Chrome 中工作,但在 Safari 中中断:无效的正则表达式:无效的组说明符名称 /(?<=\/)([^#]+)(?=#*)/ [重复]
【发布时间】:2021-04-04 07:57:15
【问题描述】:

在我的 Javascript 代码中,这个正则表达式 /(?&lt;=\/)([^#]+)(?=#*)/ 在 Chrome 中运行良好,但在 safari 中,我得到:

无效的正则表达式:无效的组说明符名称

有什么想法吗?

【问题讨论】:

标签: javascript regex safari


【解决方案1】:

看起来像 Safari doesn't support lookbehind yet(即您的 (?&lt;=\/))。一种替代方法是将之前出现的/ 放在未捕获的组中,然后仅提取第一组(/ 之后和# 之前的内容)。

/(?:\/)([^#]+)(?=#*)/

另外,(?=#*) 很奇怪 - 您可能希望提前查找 某事(例如 # 或字符串的结尾),而不是 * 量词( # 出现零次或多次)。使用类似的东西可能会更好

/(?:\/)([^#]+)(?=#|$)/

或者完全忽略前瞻(因为([^#]+) 是贪婪的),具体取决于您的情况。

【讨论】:

  • 天哪,这让我免于数小时的痛苦!在本机反应中得到invalid group specifier name, no stack,不知道在哪里看!在此基础上简单搜索(? 就可以了。谢谢!
  • 男人谢谢你?这个问题在生产中,我没有 MAC 可以测试。有人把错误读给我听,你帮了忙。谢谢maaaaaaaaaannnnnnnnnn !!!!!!!!!
  • 2 年多还是不支持这个怎么回事.. 无论如何,为修复伙伴欢呼!
  • 天哪,真不敢相信 safari 不支持向后看
  • 我在查看显示启用开发者控制台的 Apple 页面后来到这里。它说...“确保您的网站与所有基于标准的网络浏览器都能正常工作”。哇苹果。哇。
猜你喜欢
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2021-11-29
相关资源
最近更新 更多