str = 'foo bar';
var res = str.match(/(?:foo)\w*/);
alert(res)
"(?:foo)" -
foo в незапоминающих скобках. В данном случае, поскольку к скобкам не добавлены никакие множители это равносильно просто
"foo".
"\w*" -
0 и более раз повторённый символ из диапазона
[a-zA-Z0-9_]. В данном случае поскольку после foo идёт сразу пробел, получается вариант с
0 символов.
В результате находит только "foo".
Чтобы выводил bar если известно только foo:
str = 'foo bar';
var res = str.match(/foo\s+(\w+)/);
alert(res[1])
alert(res)