Regex不适用于Firefox,但适用于Chrome

Regex not working in Firefox, but working in Chrome

本文关键字:适用于 Chrome Firefox 不适用 Regex      更新时间:2023-09-26

我有一个正则表达式:

var message = message.replace(/<a.+?data-pageid=(?:"|')('d+)(?:"|').+?<'/a>/g, '@[$1]');

它适用于Chrome和ctrns这个文本。。。

'some text <a contenteditable="false" data-pageid="2">some more text</a>'

插入此文本。。。

'some text @[2]'

然而,对于Firefox来说,它不起作用。也没有错误通知。它似乎只是"忽略"了正则表达式。有什么想法吗?

基于同名的变量将其声明为变量有意义吗?

原件:

var message = 'some text <a contenteditable="false" data-pageid="2">some more text</a>'
var message = message.replace(/<a.+?data-pageid=(?:"|')('d+)(?:"|').+?<'/a>/g, '@[$1]');

在Firefox 36.0.1(以及其他版本,请参阅上面的注释)上,这会将message设置为some text @[2]

删除第二个声明:

var message = 'some text <a contenteditable="false" data-pageid="2">some more text</a>'
message = message.replace(/<a.+?data-pageid=(?:"|')('d+)(?:"|').+?<'/a>/g, '@[$1]');

这仍然可以在原来工作的地方工作,但可能在处理范围不同的地方工作。我在猜测这个问题,因为我无法复制它。

为了更好地解决问题,请提供您的Firefox版本和示例实现。