Заменить флаг s в парсере BB кода
Всем привет! Столкнулся с проблемой отсутствия поддержки флага s на Firefox 68. Обновить браузер возможности нет. В проекте использую библиотеку js-bbcode-parser, в которой есть такое место:
setCodes(codes) {
this.codes = Object.keys(codes).map(function (regex) {
const replacement = codes[regex];
return {
regexp: new RegExp(regex, 'igms'),
replacement: replacement
};
}, this);
return this;
}
Как можно заменить этот флаг s?
Ответы (1 шт):
Автор решения: Vad Sim
→ Ссылка
Вместо . можно использовать [^].
Разбор
Конструкция [^123] совпадает со всем, кроме 1, 2 или 3, т.е. обратное действие к [123].
Т. е. [^] – это "всё, кроме ничего".
Что такое s
Флаг s означает, что точка может совпадать с \n, т. е. новой строкой.
Правки в коде
setCodes(codes) {
this.codes = Object.keys(codes).map(function (regex) {
regex = regex.replace(/\./g, "[^]");
const replacement = codes[regex];
return {
regexp: new RegExp(regex, 'igm'),
replacement: replacement
};
}, this);
return this;
}