Если вам позволяет задача, попробуйте искать текст с помощью 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", "Петров", "Артём"));