在我的 Javascript 代码中,这个正则表达式 /(?<=\/)([^#]+)(?=#*)/
在 Chrome 中运行良好,但在 safari 中,我得到:
无效的正则表达式:无效的组说明符名称
有任何想法吗?
看起来像 Safari doesn't support lookbehind yet(即您的 (?<=\/)
)。一种替代方法是将之前出现的 /
放入未捕获的组中,然后仅提取第一个组(/
之后和 #
之前的内容)。
/(?:\/)([^#]+)(?=#*)/
此外,(?=#*)
很奇怪 - 您可能希望提前查找 something(例如 #
或字符串的结尾),而不是 *
量词(零 em> 或多次出现的 #
)。使用类似的东西可能会更好
/(?:\/)([^#]+)(?=#|$)/
或者完全忽略前瞻(因为 ([^#]+)
是贪婪的),具体取决于您的情况。
只是想把这个放在那里,给那些偶然发现这个问题但找不到任何东西的人......
我遇到了同样的问题,结果是我的一个依赖项中的 RegEx 表达式,即 Discord.js 。
幸运的是,我不再需要那个包,但如果你这样做了,请考虑将问题放在那里或其他东西(也许你甚至不应该在你的前端反应应用程序中运行 discord.js)。
不定期副业成功案例分享