Показать сообщение отдельно
  #34 (permalink)  
Старый 17.12.2019, 17:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

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)); //вывод последнего участка строки
Ответить с цитированием