Нет ничего встроенного, что сделает это за вас, вам придется написать для него функцию.
Если вы знаете , строки не содержат ни одной изсимволы, которые являются специальными в регулярных выражениях, тогда вы можете немного обмануть, например:
if (new RegExp(substrings.join("|")).test(string)) {
// At least one match
}
..., который создает регулярное выражение, представляющее собой последовательность чередований для подстрок, которые выВы ищете (например, one|two
) и проверяете, есть ли совпадения для любого из них, но если любая из подстрок содержит какие-либо символы, которые являются специальными в регулярных выражениях (*
, [
и т. д.)вам нужно сначала их избежать, и вам лучше просто делать скучный цикл.
Бесплатный пример из жизни
Обновление:
В комментарии к вопросу Martin спрашивает о новой функции Array#map
в ECMAScript5.map
не так уж сильно помогает, но some
это:
if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) {
// There's at least one
}
Живой пример (работает только в современных браузерах)
Имейте в виду,это означает некоторые накладные расходы, и вы имеете их только в ECMAScript5-совместимых реализациях (например, не в IE7 или более ранних, например; возможно, даже не в IE8), но все же, если вы действительно в этом стиле программирования ... (ИВы можете использовать шимку ECMAScript5, , эту или любую другую.)