sed - using regex and | need help

From my understanding when using regex1|regex2 the matching process tries each alternative in turn, from left to right, and the first one that succeeds is used.
When im trying to extract the name from those examples:

A) name.can.be.different.20.03.2009.boom
B) name.can.be.different.20.03.09.boom
C) name_can_be_different_2009_boom

by using:

sed 's/\(.*\)[._]\([0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9]\|[0-9][0-9].[0-9][0-9].[0-9][0-9]\|[0-9][0-9][0-9][0-9]\)[._]\(.*\)/\1/'

It gives:

A) name.can.be.different.20.03 (WRONG)
B) name.can.be.different (GOOD)
C) name_can_be_different (GOOD)

Why does it fail on A) ? By my order of regex pattern it's suppose to match on
[0-9][0-9].[0-9][0-9].[0-9][0-9][0-9][0-9] but it doesn't ?

sed 's/\([^0-9]*\)[._]\(.*\)/\1/' filename

Another approach with sed:

sed 's/[._][0-9].*//' file

Regards