foo.replace(/,([^,]*)$/, ' and $1')
используйте привязку $ (конец строки), чтобы указать вам свою позицию, и найдите шаблон справа от индекса запятой, который не содержит никаких дополнительных запятых.
Изменить:
Вышеуказанное работает точно для определенных требований (хотя строка замены произвольно свободна), но на основе критики из комментариев ниже лучше отражает дух первоначального требования.
foo.replace(/,\s([^,]+)$/, ' and $1')