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