删除电子邮件地址中的无效字符

问题描述:

我试图找出如何删除电子邮件地址中的所有无效字符。删除电子邮件地址中的无效字符

例如:电子邮件=“taeo͝'; [email protected]”(是电子邮件的字符),将结果应该是:电子邮件=‘[email protected]

我使用以下电子邮件方式:

String email_pattern = "^[^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$]"; 

String modifiedEmail = email.replaceAll(email_pattern,""); 

但上面的代码是给结果:电子邮件=“[email protected]”,但预计“[email protected]

任何建议或更好的方法,将不胜感激。

+0

什么是错了[Unicode的电子邮件地址(http://*.com/questions/3844431/are-email-addresses-allowed-to-contain-non-alphanumeric-characters)? – 2012-12-26 22:01:56

我通过使用模式匹配器解决了它。

email = "testo͝';@.com.my" 
String EMAIl_PATTERN = "[^a-zA-Z0-9!#$%&@'*+-/=?^_`{|}~.]+"; 
modifiedEmail = email.replaceAll(EMAIl_PATTERN, ""); 

这里就是为什么你不应该过滤你的电子邮件不会忽略一个不错的博客文章: http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/

TL; DR:检查是否有一个@(可选一段时间),并发送一个测试邮件。
大卫建议使用正则表达式:

/[email protected]+\..+/ 
+0

伟大的文章。我喜欢这个解决方案。我也很喜欢我能如何记住这个正则表达式以备将来使用。 –

进一步的思考: 你也可以用于测试无需验证(例如http://trashmail.com/)使用的电子邮件不会忽略的知识提供者。