JoenRules,
RegExp.escape экранирование служебных символов
https://learn.javascript.ru/regexp-escaping
. это любой символ в RegExp
\. это просто точка
если в строке поиска есть точка, нужно "уточнить" (экранировать) что это именно точка.
подробнее по ссылке.
let found = parts.every(reg => { // parts -> массив всех совпадений
// every -> каждое совпадение должно быть в проверяемой строке
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]))// вывод элемента mark с текстом совпадения
);
}
result.append(value.slice(index)); //вывод последнего участка строки