Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.02.2015, 11:41
Аватар для Momon
Аспирант
Отправить личное сообщение для Momon Посмотреть профиль Найти все сообщения от Momon
 
Регистрация: 02.12.2014
Сообщений: 72

Регулярное выражение (regexp) для поиска
Для поиска в массиве из нескольких тысяч строк использую такое регулярное выражение:
/(?=.*(\s|^|-)слово1)(?=.*(\s|^|-)слово2)(?=.*(\s|^|-)слово3)/.test.arr[i]
Оно использует упреждение для того чтобы найти в массиве те строки в которых встречаются все слова из запроса пользователя в любом порядке, причём поиск совпадения каждого конкретного слова идёт с его начала, а не откуда нибудь из середины.

Проблема в том, что когда пользователь вводит два повторяющихся слова "баден баден" такое регулярное выражение, понятное дело, находит совпадение в строке массива из одного единственного слова "баден". Как можно это подправить? Ну, чтобы не находило. Насколько я понял нужно как то запомнить то, что уже нашли.

Последний раз редактировалось Momon, 03.02.2015 в 11:56.
Ответить с цитированием
  #2 (permalink)  
Старый 03.02.2015, 12:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Momon,
вариант без regexp
function foo(str, search)
  {
     str = str.split(' ').sort();
     search = search.split(' ').sort();
     var indx = 0;
     for (var i=0; i<search.length; i++)  {
         indx = str.indexOf(search[i], indx) + 1  ;
         if(!indx) return false
     }
     return true
  }

  alert(foo('баден', 'баден баден') )
  alert(foo('баден test баден', 'баден баден') )
  alert(foo('баден баден', 'баден баден') )
Ответить с цитированием
  #3 (permalink)  
Старый 03.02.2015, 15:34
Аватар для Momon
Аспирант
Отправить личное сообщение для Momon Посмотреть профиль Найти все сообщения от Momon
 
Регистрация: 02.12.2014
Сообщений: 72

рони,
Огромное спасибо! А где вы берете такие штуки?
Ответить с цитированием
  #4 (permalink)  
Старый 03.02.2015, 15:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от Momon
А где вы берете такие штуки?
их бин подумать, ферштейн?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярное выражение для ссылки persten Общие вопросы Javascript 1 17.09.2013 22:06
Регулярное выражение для проверки URL Beck Events/DOM/Window 13 06.02.2011 08:01
Java-скрипт для поиска. 2oo Общие вопросы Javascript 25 11.12.2010 13:10
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29
Регулярное выражение для поиска смайлов. NightmareZ Общие вопросы Javascript 13 23.06.2009 13:12