Я знаком с поиском строки для данной подстроки:

if (string.indexOf(substring) > -1) {
    var containsSubstring = true;
}

Но что, если подстрока должна быть словом ?

Слово .

  • он должен быть в начале строки с пробелом после нее; или же
  • в конце строки с пробелом перед ней; или же
  • в середине строки с пробелом с каждой стороны

Если я ищу подстроку fox:

the quick brown fox // matches
fox jumps over the lazy dog // matches
quick brown fox jumps over // matches


the quick brownfox // does not match
foxjumps over the lazy dog // does not match
quick brownfox jumps over // does not match
quick brown foxjumps over // does not match
quick brownfoxjumps over // does not match

Есть ли какой-нибудь способ достичь указанных выше результатов с indexOf или мне нужно будет использовать регулярное выражение?

-1
Rounin 30 Авг 2017 в 18:32

3 ответа

Лучший ответ

Вы пытались использовать регулярное выражение с границами слов:

if (/(\bfox\b)/g.test(substring)) {
    var containsSubstring = true;
}

https://regex101.com/r/G3iOGi/1

1
combatc2 30 Авг 2017 в 15:42

Это можно сделать, проверив, находится ли она в начале строки и имеет ли после нее пробел или находится в конце строки, а также до или после середины строки и до и после пробела. ,

0
Frank Egan 30 Авг 2017 в 15:35

Вы можете использовать метод поиска.

var string = "foxs sas"

var search = string.search(/\bfox\b/) >= 0? true : false;

console.log(search)
1
Rafael Umbelino 30 Авг 2017 в 16:27