Я использую бесплатный Javascript для поиска и выделения текста на сайте.
Если поисковый запрос является частью слова, слово дыры должно быть выделено.
Пример: ищите «over», затем необходимо выделить «stackoverflow».
Итак, первый шаг - поиск текста с помощью регулярных выражений, чтобы выбрать начало всего слова, и возврат начальной позиции:
var string='over'; //String to search
var pattern= new RegExp("[a-zA-Záéíóäëiöúàèììùüß-]*"+string,'i');
var position = node.data.toUpperCase().search(pattern);
Далее следует вызвать функцию выделения ....
if (position >= 0)
return highlight(node, position, string);
else
return 0;
... который использовал начальную позицию и обнаруживает последний символ (конечный бит) слова
function highlight(node, position, string){
var middlebit = node.splitText(position);
var endbit = middlebit.splitText(middlebit.data.search(/[^a-zA-Záéíóäëiöúàèììùüß-]/));
[...] next: highlight the word...
Это работает нормально, если вы НЕ используете мутантные гласные, умляуты и так далее.
Например: если вы ищете более, все слово «stackoverflow» подсвечивается.
Если вы ищете «würstchen» (например, в bratwürstchen), это не сработает.
Похоже, что
var position = node.data.toUpperCase().search(pattern);
или
var middlebit = node.splitText(position);
Не работает с такими специальными символами.
Надеюсь, у кого-нибудь есть идея, как решить эту проблему.
Большое спасибо,
Bndr