使用正则表达式验证电子邮件地址

时间:2013-02-19 11:14:08

标签: java regex email

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

 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

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

2 个答案:

答案 0 :(得分:3)

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

进行限制
String lineIwant = mine.substring(0, 32).trim();

另请参阅this SO question and the answersthis web page讨论电子邮件地址regexps(它的相当比您当前正在做的更复杂,我会重新考虑您的方法。使用regexps )

答案 1 :(得分:1)

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

这是一个链接

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