在 Chrome 中工作,但在 Safari 中中断:无效的正则表达式:无效的组说明符名称 /(?<=\/)([^#]+)(?=#*)/
2022-08-30 05:14:22
在我的Javascript代码中,这个正则表达式在Chrome中工作正常,但在safari中,我得到:/(?<=\/)([^#]+)(?=#*)/
正则表达式无效:组说明符名称无效
有什么想法吗?
在我的Javascript代码中,这个正则表达式在Chrome中工作正常,但在safari中,我得到:/(?<=\/)([^#]+)(?=#*)/
正则表达式无效:组说明符名称无效
有什么想法吗?
看起来 Safari 还不支持 lookbehind(即你的 )。一种替代方法是将前面的内容放在未捕获的组中,然后仅提取第一个组(之后和之前的内容)。(?<=\/)
/
/
#
/(?:\/)([^#]+)(?=#*)/
此外,是奇怪的 - 您可能希望预先查找某些内容(例如或字符串的末尾),而不是量词(零个或多个出现的)。最好使用类似的东西(?=#*)
#
*
#
/(?:\/)([^#]+)(?=#|$)/
或者只是完全省略前瞻(因为贪婪),这取决于你的情况。([^#]+)
只是想把这个放在那里给任何偶然发现这个问题的人,找不到任何东西......
我遇到了同样的问题,结果发现它是我的一个依赖项中的正则表达式,即Discord.js。
幸运的是,我不再需要那个软件包,但如果你这样做,请考虑在那里放一个问题或其他东西(也许你甚至不应该在你的前端react应用程序中运行discord.js)。