Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.01.2013, 07:58
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

помогите с регуляркой
Здравствуйте уважаемые, подскажите как решить такую задачу.
Нужно подсветить результаты поиска. (например
<span class='highlight'>прив</span>ет мир
) Допустим есть строка:

"Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах."

поисковые условия могут быть: содержит, начинается с, заканчивается на если с первым вариантом проблем нет (RegExp и ключи ig) то как подсветить к примеру поисковое условие начинается с "короткомет", при чем не должно ничего подсветится при условии начинается с "ориентац" так как на самом деле предложение не начинается с этого набора... Я имею ввиду поиск RegExp без ключа g здесь не подходит. То же самое с условием заканчивается на...

Ну и вторая проблема как при поиске тапа содержит "корот" или содержит "короткометр" подсветить последнее условие. Т.е. варианты типа
<span class='highlight'><span class='highlight'>Корот</span>кометр</span>ажки
или
<span class='highlight'>Корот</span>кометражки
не верны, правильно будет
<span class='highlight'>Короткометр</span>ажки


Дайте направление куда смотреть.
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2013, 08:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,206

Сообщение от ast_ross
как подсветить к примеру поисковое условие начинается с "короткомет"
Как вариант...

var s='Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.';
var val='Коротком';
alert(s.replace(new RegExp('(^'+val+')',''),'($1)'));

Сообщение от ast_ross
То же самое с условием заканчивается на...
Как вариант...

var s='Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.';
var val='ннах.';
alert(s.replace(new RegExp('('+val+')$',''),'($1)'));
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2013, 08:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,206

Сообщение от ast_ross
Ну и вторая проблема как при поиске тапа содержит "корот" или содержит "короткометр" подсветить последнее условие.
Убрать первое выделение, сделать новое выделение...
Ответить с цитированием
  #4 (permalink)  
Старый 30.01.2013, 12:27
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

Спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 30.01.2013, 12:46
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

может подскажите как удалить из массива "неугодные" данные.
т.е. к примеру:
var words = ['hel','hello','wor','world'];

как получить
var words = ['hello','world'];

многократно перебирать массив?
Ответить с цитированием
  #6 (permalink)  
Старый 30.01.2013, 12:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

ast_ross,
Как бы вы определили неугодность данных? какой кретерий?
Ответить с цитированием
  #7 (permalink)  
Старый 30.01.2013, 13:08
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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);
Ответить с цитированием
  #8 (permalink)  
Старый 30.01.2013, 13:12
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

не угодность оценивается по принципу полного содержания одной последовательности в другой, к примеру при наличии world убираем wor, так как world содержит wor...
Ответить с цитированием
  #9 (permalink)  
Старый 30.01.2013, 13:14
Интересующийся
Отправить личное сообщение для ast_ross Посмотреть профиль Найти все сообщения от ast_ross
 
Регистрация: 30.01.2013
Сообщений: 15

и еще по первому вопросу забыл как быть если надо игнорировать html теги, т.е так уже не работает.

var s='<p>Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>';
var val='Коротком';
alert(s.replace(new RegExp('(^'+val+')',''),'($1)'));


но html нужно сохранить, т.е. очистить изначально текст не вариант....
Ответить с цитированием
  #10 (permalink)  
Старый 30.01.2013, 13:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

ast_ross,
при условии однократного вхождения одного слова в другое ... вариант
var words = ['world','hel','wor','hello'];
str = words.sort().join(' ').replace(/(\S+)(.*?)(\1\S+)/g,"$2$3").match(/\S+/g)
alert(str)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с регуляркой shtormIK Общие вопросы Javascript 6 26.06.2012 20:02
Помогите плз с регуляркой zsaz jQuery 1 25.05.2012 18:41
помогите с регуляркой ... motoroller Элементы интерфейса 1 23.11.2009 22:01
помогите с регуляркой Holod Общие вопросы Javascript 1 19.08.2009 12:02
Помогите с регуляркой... alexKniaz AJAX и COMET 0 03.11.2008 01:16