UTF的Java电子邮件验证

UTF的Java电子邮件验证,java,regex,validation,email-validation,Java,Regex,Validation,Email Validation,我需要确保电子邮件是有效的。我还需要检查一下,里面没有奇怪的UTF字符。我不赞成用正则表达式验证它 ^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$ 但我如何检查它的UTF 谢谢您是想确认它是有效的w.r.t 如果是,您只能检查字节[]是否为有效的UTF-8。尝试验证

我需要确保电子邮件是有效的。我还需要检查一下,里面没有奇怪的UTF字符。我不赞成用正则表达式验证它

^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$
但我如何检查它的UTF


谢谢

您是想确认它是有效的w.r.t

如果是,您只能检查
字节[]
是否为有效的UTF-8。尝试验证UTF-16代码单元序列(Java
char
s)或代码点是否有效是没有意义的,因为UTF-8是字节字符串到代码点字符串的映射,UTF-16是代码单元->的映射。第3.9节解释了所有这些


判断
字节[]
是否为格式良好的UTF-8序列的最佳方法是使用一个内置解码器,例如,或使用与Guava等效的
字符集。UTF8

如果要确保电子邮件地址中只有ASCII字符,可以使用该模式:

"[^\\x00-\\x7F]"

它将包含任何非ascii字符。

我在正则表达式中没有看到任何可以匹配任何奇怪字符的内容。您总是执行
a-z
等操作,而不是
或任何操作。UTF对电子邮件地址有效。