|
помогите с регуляркой
Здравствуйте уважаемые, подскажите как решить такую задачу.
Нужно подсветить результаты поиска. (например <span class='highlight'>прив</span>ет мир) Допустим есть строка: "Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах." поисковые условия могут быть: содержит, начинается с, заканчивается на если с первым вариантом проблем нет (RegExp и ключи ig) то как подсветить к примеру поисковое условие начинается с "короткомет", при чем не должно ничего подсветится при условии начинается с "ориентац" так как на самом деле предложение не начинается с этого набора... Я имею ввиду поиск RegExp без ключа g здесь не подходит. То же самое с условием заканчивается на... Ну и вторая проблема как при поиске тапа содержит "корот" или содержит "короткометр" подсветить последнее условие. Т.е. варианты типа <span class='highlight'><span class='highlight'>Корот</span>кометр</span>ажкиили <span class='highlight'>Корот</span>кометражкине верны, правильно будет <span class='highlight'>Короткометр</span>ажки Дайте направление куда смотреть. |
Цитата:
var s='Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.'; var val='Коротком'; alert(s.replace(new RegExp('(^'+val+')',''),'($1)')); Цитата:
var s='Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.'; var val='ннах.'; alert(s.replace(new RegExp('('+val+')$',''),'($1)')); |
Цитата:
|
Спасибо!
|
может подскажите как удалить из массива "неугодные" данные.
т.е. к примеру: var words = ['hel','hello','wor','world']; как получить var words = ['hello','world']; многократно перебирать массив? |
ast_ross,
Как бы вы определили неугодность данных? какой кретерий? |
Cобственно Вам нужно узнать : Если в массиве эти элементы ?
var words = ['hel','hello','wor','world']; var str=(','+words+',').replace(/^.*?(,hello,|,world,).*?(,world,|,hello,).*$/gm,'$1$2'); var arr = str.replace(/^,(.*),$/,'$1').split(',,') alert(arr); |
не угодность оценивается по принципу полного содержания одной последовательности в другой, к примеру при наличии world убираем wor, так как world содержит wor...
|
и еще по первому вопросу забыл как быть если надо игнорировать html теги, т.е так уже не работает.
var s='<p>Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>'; var val='Коротком'; alert(s.replace(new RegExp('(^'+val+')',''),'($1)')); но html нужно сохранить, т.е. очистить изначально текст не вариант.... |
ast_ross,
при условии однократного вхождения одного слова в другое ... вариант var words = ['world','hel','wor','hello']; str = words.sort().join(' ').replace(/(\S+)(.*?)(\1\S+)/g,"$2$3").match(/\S+/g) alert(str) |
Часовой пояс GMT +3, время: 13:46. |
|