Показать сообщение отдельно
  #15 (permalink)  
Старый 13.12.2019, 23:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

ещё вариант поиска, при условии пробел - слово - пробел ...
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        label {
            display: flex;
            flex-direction: column;
        }
        #result mark {
            color: #FF0000;
        }
    </style>
</head>
<body>
    <label>
        Исходная строка:
        <input id="text" placeholder="Введите текст..." value="спасибо ЗАКИРОВ АМИРЗЯН ГАЗИЗЬЯНОВИЧ главный врач главный врач">
    </label>
    <label>
        Искомые совпадения:
        <input id="search" placeholder="Введите текст..." value="гл в">
    </label>
    <p id="result"></p>
    <script>
RegExp.escape = s => s.replace(/[[\\^$.|?*+()]/gim, "\\$&");

search.addEventListener("input", () => {
    const value = text.value.trim().split(/\s+/);
    const parts = search.value.trim().split(/\s+/).map(s => s.toLowerCase());
    const length = parts.length;
    for (let i = 0; i <= value.length - length; i++) {
        let found = value.slice(i, i + length).every((txt, k) => txt.toLowerCase().includes(parts[k]));
        if(found) {
            parts.forEach((pattern, k) => value[k + i] = value[k + i].replace(new RegExp(RegExp.escape(pattern), "i"), "<mark>$&</mark>"));
            i += length - 1;
        }
    }

    result.innerHTML = value.join(" ");

});
search.dispatchEvent(new Event("input"));
</script>
</body>
</html>

Последний раз редактировалось рони, 13.12.2019 в 23:55.
Ответить с цитированием