Здравствуйте.
Делаем таблицу, 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);
}
Но такое регулярное выражение ищет только если второе слово встречается после первого.
На отчества внимания не обращайте, они генерируются из имен и халтурно (тестовые данные). 
