RegExp, поиск набора слов
Условие пройдет при наличии хотя бы одного из набора слов(в данном случае их 3) в строке:
var s = "aaa bbb ccc ddd eee"; var expr = new RegExp('aaa|bbb|ccc','i'); if(expr.test(stroka)){ console.log('OK'); } Мне же необходим такой поиск, при котором в строке искался бы весь набор слов, а не одно из набора, и если весь набор присутствует в строке, то условие выполняется. PS: надеюсь понятно выразился) |
И порядок произвольный?
Как-то так наверное. function contains(str,arr){ var i=arr.length; while(i--)if(str.indexOf(arr[i])==-1)return false; return true } str = "aaa bbb ccc ddd eee"; arr = ['aaa','bbb','ccc']; alert(contains(str,arr)) arr = ['aaa','bbb','ccc','xxx']; alert(contains(str,arr)) |
(s.match(/aaa|bbb|ccc/i) || []).length === 3;
3 это колво слов |
Aetae, Вы предлагаете использовать indexOf() - не сработает в старых версиях IE, в которых версия JS до 1.6.
|
Цитата:
|
PeaceCoder, https://developer.mozilla.org/en/New_in_JavaScript_1.6
Цитата:
|
Беляш
Цитата:
|
Matre, спасибо. Единственно необходимо добавить флаг g, чтобы, как я понимаю, не прекращался поиск после первого совпадения.
(s.match(/aaa|bbb|ccc/ig) || []).length === 3; |
Цитата:
|
var s = "aaa bbb ccc ddd eee"; alert( (s.match(/aaa|bbb|ccc/ig) || []).length === 3 ) var s = "aaa bbb ccc ddd bbb eee bbb"; alert( (s.match(/aaa|bbb|ccc/ig) || []).length === 3 ) fail |
delete
|
Часовой пояс GMT +3, время: 21:49. |