2

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

例如: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"

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

4

3 回答 3

11

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

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

/.+@.+\..+/
于 2012-12-26T21:52:52.637 回答
1

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

email = "testo͝';@.com.my"   
String EMAIl_PATTERN = "[^a-zA-Z0-9!#$%&@'*+-/=?^_`{|}~.]+";
modifiedEmail = email.replaceAll(EMAIl_PATTERN, "");
于 2012-12-27T17:33:36.030 回答
0

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

于 2012-12-26T22:36:47.023 回答