正则表达式不适用于Firefox,但在Chrome中工作

时间:2015-03-25 12:09:00

标签: javascript regex google-chrome firefox mozilla

我有这个正则表达式:

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

它适用于Chrome和cturns这个文本......

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

......进入本文......

'some text @[2]'

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

1 个答案:

答案 0 :(得分:0)

基于具有同名的变量将此声明为 new 变量是否有意义?

原件:

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版本和示例实现。