This is the equivalent of matching g OR o and what follows. so on gPhrase it matches g. If you want to match go then: try /(go)*/ that will return a null for gPhrase but it will only return go on soccerWord not gooooooooo.
The o* aftter g in the regular expression /go*/ means match g then match zero or more os following the g. In this case, it matches the g in gut feeling, because there are no os after g. If the expression would have been /go/, then gPhrase.match(goRegex); would have returned null because there is not an instance of a g followed by an o.