Заменить флаг 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;
}
→ Ссылка