というわけでrfcに従うなら↓こうなるけど

Pattern pattern = Pattern.compile(
"(([a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*)|(\"([\\x20-\\x21\\x23-\\x5b\\x5d-\\x73]|\\x5c[\\x20-\\x7e])*\"))"
+ "@([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)(\\.([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?))*");

現実にはrfcに従ってないメールアドレスもあるからね
そんな厳密にやる必要ないかと、とくに今回のような場合は
有効なメールアドレスかチェックするってわけじゃないし
>>805で大丈夫だと思うよ