在我的Javascript代码中,这个正则表达式/(?<=\/)([^#]+)(?=#*)/在Chrome中运行良好,但在safari中,我得到:无效的正则表达式:组说明符名称无效有什么想法吗?
/(?<=\/)([^#]+)(?=#*)/
x7yiwoj41#
看起来像Safari doesn't support lookbehind yet(也就是您的(?<=\/))。一种替代方法是将前面的/放在非捕获组中,然后只提取第一个组(/之后和#之前的内容)。
(?<=\/)
/
#
/(?:\/)([^#]+)(?=#*)/
另外,(?=#*)是奇数--您可能希望提前查找 something(例如#或字符串的结尾),而不是*量词(#出现次数为 zero 或更多次)。
(?=#*)
*
/(?:\/)([^#]+)(?=#|$)/
或者完全省略lookahead(因为([^#]+)是贪婪的),这取决于您的环境。
([^#]+)
rjee0c152#
只是想把这个放在那里的人谁偶然发现这个问题,找不到任何东西...我遇到了同样的问题,结果是我的一个依赖项Discord.js中的RegEx表达式。幸运的是,我不再需要这个包了,但是如果你需要的话,考虑一下把一个问题放在那里或者其他什么地方(也许你甚至不应该在你的前端React应用程序中运行discord.js)。
1tuwyuhd3#
对RegExp look behindAssert的支持由Web工具包发布:检查链接:https://github.com/WebKit/WebKit/pull/7109
3条答案
按热度按时间x7yiwoj41#
看起来像Safari doesn't support lookbehind yet(也就是您的
(?<=\/)
)。一种替代方法是将前面的/
放在非捕获组中,然后只提取第一个组(/
之后和#
之前的内容)。另外,
(?=#*)
是奇数--您可能希望提前查找 something(例如#
或字符串的结尾),而不是*
量词(#
出现次数为 zero 或更多次)。或者完全省略lookahead(因为
([^#]+)
是贪婪的),这取决于您的环境。rjee0c152#
只是想把这个放在那里的人谁偶然发现这个问题,找不到任何东西...
我遇到了同样的问题,结果是我的一个依赖项Discord.js中的RegEx表达式。
幸运的是,我不再需要这个包了,但是如果你需要的话,考虑一下把一个问题放在那里或者其他什么地方(也许你甚至不应该在你的前端React应用程序中运行discord.js)。
1tuwyuhd3#
对RegExp look behindAssert的支持由Web工具包发布:
检查链接:https://github.com/WebKit/WebKit/pull/7109