Regex не работает в Firefox, но работает в Chrome

У меня есть это регулярное выражение:

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

Он отлично работает для Chrome и поворачивает этот текст...

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

... в этот текст...

'some text @[2]'

Однако для Firefox это не работает. Там также нет уведомлений об ошибках. Кажется, это "игнорирует" это регулярное выражение. Есть идеи?

1 ответ

Имеет ли смысл объявлять это как новую переменную, основанную на переменной с тем же именем?

Оригинал:

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 и пример реализации.

Другие вопросы по тегам