Поиск определённых слов в контенте
Имеется небольшой скрипт, функция, которая ищет в контенте определённые слова и выделяет их. При наведении на выделенные слова показывается баннер, по образу и подобию как тут. Функция написана и даже работает, но возникла одна неприятная неожиданность, поиск ведётся только по точному соответствию слов. Решил обратиться к тем у кого опыта работы с JS по больше чем мой, так как Я с JS занимаюсь буквально 2 месяца)))
Пытался разобраться с регулярными выражениями, но что то не получается, народ, подскажите, как переписать функцию, чтоб выделяла не по точному соответствию, тоесть, вводим слово для поиска "привет" и функция ищет в контенте не только "привет", но также "Привет", "ПРИВЕТ", "приВет" Код прилагается: function searchTextOnPage() { var toFind = document.getElementById("qwer").innerHTML; document.getElementById("qwe").innerHTML = document.getElementById("qwe").innerHTML.replace(eval("/"+toFind+"/g"), "<b>"+toFind+"</b>"); } |
Используйте для регэкспа флаг i (игнорирование регистра).
/regexp/i |
exec,
а где именно его использовать? пробовал в строке ("/"+toFind+"/g") добавить, получилось это ("/"+toFind+"/gi") по сути работает, но только он мне заглавные меняет на строчные, а хотелось бы чтоб какой первоначально был регистр, тот и оставался |
function preg_quote( str ) { // Quote regular expression characters // // + original by: booeyOH // + improved by: Ates Goral ([url]http://magnetiq.com[/url]) return str.replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1"); } function searchTextOnPage() { var toFind = document.getElementById('qwer').innerHTML, holder = document.getElementById('qwe'); holder.innerHTML = holder.innerHTML.replace(new RegExp('('+preg_quote(toFind)+')', 'ig'), '<b>$1</b>'); } |
e1f,
ты действительно Профессор! Спасибо!!! а можно ещё небольшое дополнение к коду? чтоб допустим скрипт искал и выделял не только с разными регистрами, а допустим где встречаются слова в которых есть содержимое "привет", ну например чтоб ещё искал слова такие как "самПривет", "приветИк". |
вот так и помогай людям.сразу на шею сядут.
поэтому я мудак, зато не даю садится на шею себе |
Часовой пояс GMT +3, время: 10:21. |