Вы можете сопоставить первое 8
, затем захватить в группе 1 то, что находится между вторым появлением 8, и использовать положительный прогноз, если вы также хотите получить совпадение, если есть другое вхождение после 8.
Если вам нужны отдельные части, вы можете разделить данные в группе 1.
\b8\s+([^8]+)(?=\s+8\b)
\b8
Совпадение 8, которому предшествует слово bounary \s+
Совпадение 0+ пробельных символов ([^8]+)
Захват группы 1, сопоставление с любым символом, кроме 8
1+ раз (?=
Позитивный взгляд \s+8\b
Совпадение 0+ пробельных символов и совпадение 8, за которым следует граница слова
)
Закрыть взгляд
Regex demo
const pattern = /\b8\s+([^8]+)(?=\s+8\b)/;
let str = "foo bar foo 8 bar foo bar 8 foo bar foo";
str = str.match(pattern)[1].split(" ");
console.log(str);
Если вы также хотите иметь возможность сопоставлять, например, 800
между, вы можете использовать
\b8\s+(.+?)(?=\s+8\b)
Regex demo