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

在我的 Javascript 代码中,这个 regex /(?<=\/)([^#]+)(?=#*)/在 Chrome 中工作得很好,但是在 safari 中,我得到:

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

有什么想法吗?

87588 次浏览

看起来像 Safari 还不支持后视镜(也就是你的 (?<=\/))。一种替代方法是将之前出现的 /放在一个未捕获的组中,然后只提取第一组(/之后和 #之前的内容)。

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

另外,(?=#*)也很奇怪——你可能想要向前查找 什么的(比如 #或字符串的末尾) ,而不是 *量词(或更多出现的 #)。也许最好用

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

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

我只是想把这个发布出去给那些偶然发现这个问题却什么都找不到的人。

我遇到了同样的问题,结果它是我的一个依赖项 Discord.js 中的一个 RegEx 表达式。

幸运的是,我不再需要这个软件包了,但是如果你需要的话,可以考虑发布一个问题或者其他的东西(也许你甚至不应该在你的前端应用程序中运行 discord.js)。