( blr | 2017. 07. 14., p – 12:00 )

Az első legális, viszont nem azonos a másik kettővel, azoknál ugyanis a group nem fog létezni, ha nem illeszkedik a "foo".
Azok helyesen:

((?:foo)?)bar

(én ezt szoktam használni, a pipe-os megoldásra soha nem gondoltam :)

((?:foo){,1})bar