在 Chrome 中工作,但在 Safari 中中断:无效的正则表达式:无效的组说明符名称 /(?<=\/)([^#]+)(?=#*)/

IT技术 javascript regex safari
2021-01-16 00:56:32

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

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

有任何想法吗?

1个回答

看起来 Safari尚不支持后视(即您的(?<=\/))。一种替代方法是将/之前的 放在未捕获的组中,然后仅提取第一组(在 之后/和之前的内容#)。

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

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

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

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

谢谢你。我需要从 exec 结果中获取索引 1 而不是索引 0。但它有效。
2021-03-26 00:56:32
伙计 我如何感谢你?这个问题是在生产中,我没有 MAC 来测试。有人把错误读给我听,你帮了忙。谢谢 maaaaaaaaaaannnnnnnnnnnn!!!!!!!!!
2021-03-28 00:56:32
在查看了显示启用开发者控制台的 Apple 页面后,我来到了这里。它说......“确保您的网站与所有基于标准的网络浏览器都能正常工作”。哇苹果。哇。
2021-03-31 00:56:32
哦,伙计,这让我免于数小时的痛苦!正在invalid group specifier name, no stackreact-native,不知道在哪里看!(?基于此的简单搜索就找到了。谢谢!
2021-04-07 00:56:32
这怎么过了 2 年多仍然不支持..无论如何,为修复伙伴干杯!
2021-04-13 00:56:32