Depends on the goal. If you are an ISP and you need to validate that users are creating valid email addresses, go for the Regex that validates against everything possible. If you just want to catch user errors, how about the following pattern:
[All Characters, no spaces] @ [letters and numbers] (.[letters and numbers]) where the final group appears at least one time.
The RegEx for this would appear something like this:
[\S]+@[\w]+(.[w][\w-]+)+
And then send a confirmation email to be sure.