0

我一直在使用这个正则表达式来验证电子邮件地址。发现在某行上没有有效电子邮件地址的文件将被删除:

 FileInputStream fsdel = new FileInputStream("C:/Folder/" + filefinal[o]);
                BufferedReader brdel = new BufferedReader(new InputStreamReader(fsdel));
                for (int j = 0; j < 4; j++) {
                    brdel.readLine();
                }
                String email = brdel.readLine();
                String mine = email.trim();
                String lineIwant = mine.substring(0, 32).trim();
                // System.out.println("EMAIL ID: " + lineIwant);
                String emailreg = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
                Boolean b = lineIwant.matches(emailreg);

                if (b.toString() == "false") {
                    System.out.println(filedel[o]);
                    fsdel.close();
                    //brdel.close();
                    filedel[o].delete();

                }

这段代码一直运行良好,直到出现一个带有电子邮件 ID 的文件:

textsam.textsample@somedomain.co.uk

该文件因没有有效的电子邮件地址而被删除。有人可以帮助我如何将上述电子邮件地址包含为有效地址吗?

4

2 回答 2

3

为什么将电子邮件地址限制为 32 个字符?以上为 34 个字符,但您可以通过

String lineIwant = mine.substring(0, 32).trim();

另请参阅此 SO 问题和答案以及讨论电子邮件地址正则表达式的网页(它比您目前所做的要复杂得多,我会重新考虑您的方法。使用正则表达式

于 2013-02-19T11:16:41.920 回答
1

我相信您这是由于字符限制而发生的错误。始终为电子邮件地址保留至少 50 个字符。我个人的练习是 100,还可以考虑使用 Microsoft Visual Studio 中内置的正则表达式,它应该会让你的事情变得更容易。

这是一个链接

http://msdn.microsoft.com/en-gb/library/system.text.regularexpressions.regex.aspx

于 2013-02-23T19:30:36.163 回答