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

pgky5nke  于 2022-12-24  发布在  其他
关注(0)|答案(3)|浏览(138)

在我的Javascript代码中,这个正则表达式/(?<=\/)([^#]+)(?=#*)/在Chrome中运行良好,但在safari中,我得到:
无效的正则表达式:组说明符名称无效
有什么想法吗?

x7yiwoj4

x7yiwoj41#

看起来像Safari doesn't support lookbehind yet(也就是您的(?<=\/))。一种替代方法是将前面的/放在非捕获组中,然后只提取第一个组(/之后和#之前的内容)。

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

另外,(?=#*)是奇数--您可能希望提前查找 something(例如#或字符串的结尾),而不是*量词(#出现次数为 zero 或更多次)。

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

或者完全省略lookahead(因为([^#]+)是贪婪的),这取决于您的环境。

rjee0c15

rjee0c152#

只是想把这个放在那里的人谁偶然发现这个问题,找不到任何东西...
我遇到了同样的问题,结果是我的一个依赖项Discord.js中的RegEx表达式。
幸运的是,我不再需要这个包了,但是如果你需要的话,考虑一下把一个问题放在那里或者其他什么地方(也许你甚至不应该在你的前端React应用程序中运行discord.js)。

1tuwyuhd

1tuwyuhd3#

对RegExp look behindAssert的支持由Web工具包发布:
检查链接:https://github.com/WebKit/WebKit/pull/7109

相关问题