I looked things over yet again, and here's what I came up with, broken down:
<letter> = '[A-Za-z]';
<letdig> = '[A-Za-z0-9]'
<locChar> = '[!#$%&\'*+/=?^_`{|}~A-Za-z0-9-]' # valid chars for the local part, minus the dot
<domChar> = '[A-Za-z0-9-]' # adds the hyphen to letdig
<local> = '(<locChar>+\.)*<locChar>+'
<domain> = '(<letter>(<domChar>*<letdig>)*\.)*<letter>(<domChar>*<letdig>)*'
<email> = '^<local>@<domain>$' which brings the regex to:
'^([!#$%&\'*+/=?^_`{|}~A-Za-z0-9-]+\.)*[!#$%&\'*+/=?^_`{|}~A-Za-z0-9-]+@([A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])\.)*[A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])$'