Показать сообщение отдельно
  #1 (permalink)  
Старый 17.01.2014, 16:06
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Помогите составить регулярку!
Здравствуйте.

Делаем таблицу, c поиском.

Чтобы облегчить поиск я делаю одномерный массив строк таблицы. Например:

["|Павлов|Артём|Николайвна|65", "|Филиппов|Артём|Константинвна|8", "|Троицкий|Николай|Артёмвна|12", "|Покровский|Вадим|Артёмвич|72"]


Далее необходимо написать регулярное выражение составленное из слов введённых в поиск так, чтобы он нашёл строку в которой есть оба слова, вне зависимости от их порядка.

Пока что мы сделали так:

function createRegExps(text, flags) {

    if (text.lastIndexOf(" ") == 0)
          text = text.slice(0, -1);

     var texts = text.split(/\s+/),
           regExps = "";

     for (var i = 0; i < texts.length; i++) {
          regExps += "(.*" + texts[i] + ".*)"
     }

    return new RegExp(regExps, flags);
}


Но такое регулярное выражение ищет только если второе слово встречается после первого.

На отчества внимания не обращайте, они генерируются из имен и халтурно (тестовые данные).

Последний раз редактировалось tsigel, 17.01.2014 в 16:10.
Ответить с цитированием