Показать сообщение отдельно
  #4 (permalink)  
Старый 18.01.2014, 04:56
Аспирант
Отправить личное сообщение для Antonius Посмотреть профиль Найти все сообщения от Antonius
 
Регистрация: 30.11.2013
Сообщений: 42

Если вам позволяет задача, попробуйте искать текст с помощью indexOf — когда я экспериментировал это в некоторых случаях оказывалось значительно быстрее, чем регулярное выражение. Но этот вариант подойдет вам только если можно искать с учетом регистра и не нужно использовать специфичные для регулярного выражения возможности, такие как привязка к границам слов и т. д.

Ну и вот, например, вариант, относительно легко расширяемый до любого количества искомых слов (здесь при желании можно и регулярку для каждого слова отдельно использовать):

function strsearch(string /* word1, word2... */) {
    for (var i = 1; i < arguments.length; i++) {
        if (string.indexOf(arguments[i]) == -1) {
            return false;
        }
    }
    return true;
}

console.log(strsearch("|Филиппов|Артём|Константинвна|8", "Филиппов", "Константинвна"));
console.log(strsearch("|Филиппов|Артём|Константинвна|8", "Петров", "Артём"));
Ответить с цитированием