thats not exactly what you want but you may try
this will limit string after @ to contain 1 to 70 chars (usually domains should not be longer than 63 chars so limit string to 70 seems to be ok as for me )
im too dumb in this area (regexp) to get you better solution
beside its 6:25 AM and my brain does not work anymore so i think ill go to bed now
ok, i will assume you mean alphabets, numbers as well as hyphens, underscores and periods when you say "characters" (for the characters before the "@")
this should work (untested):
[-_\.a-z0-9]+ => one or more (signified by the +) characters of a hyphen, underscore, period, alphabets, digits
@ => the character "@"
[\.a-z0-9]+ => one or more (signified by the +) characters of a period, alphabets, digits
the i at the end signifies that the match should be case insensitive. it's called a "modifier"
if you want to, you can remove the hyphen and underscore in the first part of the expression...just remember to always add the hyphen as the first thing if it's within the square brackets because hyphens have a special meaning within a set of square brackets unless it appears as the first character.
hope it helps
let me know if it doesn't work as expected or you need a modification.