【问题标题】:Remove Invalid characters in an e-mail address删除电子邮件地址中的无效字符
【发布时间】:2012-12-12 08:52:39
【问题描述】:

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

例如:email="taeo͝';st@yy.com"(. 是一个电子邮件字符),结果应该是:email = "taest@yy.com"

我正在使用以下电子邮件模式:

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 = "aest@yy.com" but expected "taest@yy.com"

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

【问题讨论】:

标签: java regex string email


【解决方案1】:

这是一篇很好的博客文章,说明了为什么不应该过滤您的电子邮件地址: http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/

TL;DR:检查是否有 @(可选句点)并发送测试邮件。
David 建议使用这个正则表达式:

/.+@.+\..+/

【讨论】:

  • 很棒的文章。我喜欢这个解决方案。我也很喜欢我如何记住这个正则表达式以备将来使用。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    进一步思考: 您还可以测试未经身份验证使用的电子邮件地址的已知提供商(例如http://trashmail.com/)。

    【讨论】:

      猜你喜欢
      • 2017-05-12
      • 2012-02-08
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2019-11-26
      • 2017-01-10
      • 2013-02-28
      相关资源
      最近更新 更多