рони,
 решаю подобную задачу. Можете объяснить, что вы делаете здесь?
RegExp.escape = s => s.replace(/[[\\^$.|?*+()]/gim, "\\$&");
и здесь 
let found = parts.every(reg => {
        reg.lastIndex = 0;
        let match = reg.exec(value.slice(k));
        if(match) {
        k += match.index
        arrFindIndex.push(k, k += match[0].length);
        return true
        }
        return false;
        });
        if(found) {i = k; temp.push(...arrFindIndex)}
        else i++;
    }
    let index = 0;
    for (let i = 0; i < temp.length; i += 2){
    result.append(
            value.slice(index, index = temp[i]),
            mark(value.slice(index, index = temp[i + 1]))
        );
    }
   result.append(value.slice(index));
(комментарии возможно), если не трудно. Относительно недавно начала изучать JavaScript.