Простая проверка электронной почты в Java String - PullRequest
1 голос
/ 16 апреля 2011

Я пытаюсь найти простой способ проверить, соответствует ли ввод пользователя критериям пары для адреса электронной почты. Я прочитал много тем на эту тему, и большинство, похоже, тоже хотят проверить адрес электронной почты. Я не пытаюсь создать какой-то супер-пупер-валидатор / проверщик адреса электронной почты. Я пытаюсь построить метод, который проверяет эти вещи:

  1. Введенная пользователем строка содержит знак «@».
  2. Перед знаком "@" должно быть не менее двух символов.
  3. Есть "." после знака «а» следуют только три символа. Имя домена может быть настолько длинным, насколько это необходимо, но строка должна заканчиваться на «._ _ _». Как в ".com" или ".net" ...

Я понимаю, что это не всеобъемлющая проверка адресов электронной почты. Это не то, что я хочу. Я хочу просто что-то такое простое. Я знаю, что это, вероятно, обычный вопрос, но я не могу понять его даже после прочтения всех серьезно сумасшедших способов проверки адреса электронной почты.

Это код, который у меня есть: (Не волнуйтесь, я уже знаю, что это довольно жалко ...)

public static void checkEmail()
{
    validEmail(emailAddresses);
    if(validEmail(emailAddresses))
    {

    }
}

public static boolean validEmail(String email) {
    return email.matches("[A-Z0-9._%+-][A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{3}");
}

Ответы [ 3 ]

12 голосов
/ 16 апреля 2011

Пакет javax.mail предоставляет класс только для этого: InternetAddress.Используйте этот конструктор , который позволяет вам обеспечить соответствие RFC822.

2 голосов
/ 16 апреля 2011

Не идеально, но выполняет свою работу.

static boolean validEmail(String email) {
    // editing to make requirements listed
    // return email.matches("[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}");
    return email.matches("[A-Z0-9._%+-][A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{3}");
}

void checkEmails() {
    for(String email : emailAddresses) {
        if(validEmail(email)) {
             // it's a good email - do something good with it
        }
        else {
             // it's a bad email - do something... bad to it? sounds dirty...
        }
    }
}
0 голосов
/ 16 апреля 2011
int indexOfAt = email.indexOf('@');
// first check : 
if (indexOfAt < 0) { 
  // error
}

// second check :
if (indexOfAt < 2) {
  // error
}

// third check :
int indexOfLastDot = email.lastIndexOf('.');
if (indexOfLastDot < indexOfAt || indexOfLastDot != (email.length() - 4)) {
  // error
}

Прочитайте http://download.oracle.com/javase/6/docs/api/java/lang/String.html для документации методов String.

...