|
помогите с регуляркой
Здравствуйте уважаемые, подскажите как решить такую задачу.
Нужно подсветить результаты поиска. (например <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:58. |
|