Javascript正则表达式负面lookbehind在firefox中不起作用

Cla*_*Cla 9 javascript regex firefox regex-lookarounds

我需要修改以下javascript正则表达式,因为它中的负面lookbehind在firefox中引发错误:

content = content.replace(/(?![^<]*>)(?:[\"])([^"]*?)(?<!=)(?:[\"])(?!>)/g, '„$1“');
Run Code Online (Sandbox Code Playgroud)

有没有人有想法可以帮助我?

提前致谢!

Wik*_*żew 14

Lookbehinds仅适用于支持ECMA2018标准的浏览器,这意味着只有最新版本的Chrome才能处理它们.

要支持大多数浏览器,请将模式转换为仅使用前瞻.

(?<!=)负回顾后确保没有=立即到当前位置的左侧.[^"]是与该字符匹配的原子(请注意,?量词使其成为可选的,但这"是之前[^"]不可能的,=并且不需要限制该位置).

所以,你可以使用

content = content.replace(/(?![^<]>)"([^"=]?)"(?!>)/g, '„$1"');
                                      ^^^^^
Run Code Online (Sandbox Code Playgroud)

注意(?:[\"])等于".[^"=]?匹配除了"和之外的1或0次出现的char =.

请参阅正则表达式演示.