在Chrome中正常运行的正则表达式失败,并在Firefox中出现此错误消息:
SyntaxError:无效的regexp组
正则表达式如下所示:/(?<=\{\{)[a-zA-Z0-9_]+(?=\}\})/g
我想在{{}}之间获取所有字符。
为什么这不适用于Firefox?
答案 0 :(得分:2)
你的正则表达式(?<=\{\{)[a-zA-Z0-9_]+(?=\}\})
在Firefox中不起作用的原因是由于使用了lookbehind (?<=\{\{)
。目前,包含RegExp Lookbehind断言的ECMA TC39 proposal仅在一个主要浏览器(Chrome 62+)中实现。直到它在另一个主要的Web浏览器中实现,并不是所有主流浏览器都必须支持(根据我的理解,尽管我还没有找到这种行为的确切证据)。目前正处于第4阶段(探究阶段)。
解决这个问题?根据您的使用情况,您只需使用捕获组,如下所示:
{{(\w+)}}