Q:

Matching and capturing multiple names in a string

I have a sentence that might look like this:

Name1, Name2, Name4, Name5 have liked your image

or like this

Name1, Name2, Name4 and Name5 have liked your image

I need a regular experssion to match all names.  I've managed to grab all first four names in both cases with one expression, but somehow I'm failing to get Name5 from these and I can't figure out why. 
This is my regex:
[a-zA-Z0-9_\.]+(?=,| and)

Demo: http://www.phpliveregex.com/p/3U4  (click preg_match_all)
Demo2: http://www.phpliveregex.com/p/3U5  (is the version that works, please confirm)

What is wrong with my regular expression? 

A:

You can capture all names this way regarding on your example
[a-zA-Z0-9_.]+(?=,| and| have)

Detail: .  does not need to be escaped when into brackets

