The simple answer is to make the whole thing optional as in:
(([a-zA-Z0-9_\-\.]+)(@email.com))?
but this is probably NOT what you want because it will find the gap between each and every character in the text you are scanning. (Using the text of "hello" returns 6 matches, each of the null string).
If the email address is the only thing in the text, then either a coded check (length(string) = 0) or the above suggestion will work. If you are wating to locate an email address within some other text then you will need to tell us how we can detect when there is a missing email.
By the way, the '.' character does not need to be escaped within a character class.
I've found that, when I'm pressed for time, it sometimes pays to stop and think clearly about what I'm doing in the broarder context which often puts things into perspective, meaning that I end up with the solution faster than hammering away at the wrong problem.
Susan