Проблемы с проверкой почты Regex в Java - PullRequest
1 голос
/ 27 апреля 2020

Я пытаюсь сделать базовый c проект для класса, но я столкнулся с проблемой. При проверке кода он работает, когда введено «test@test.com». Тем не менее, при дальнейшем тестировании и введении ввода "test@test.com.com" он все равно возвращает действительный. Вот код:

  System.out.println("Enter a valid email address: ");
  Scanner scan = new Scanner(System.in);
  emailAddress = scan.next();
  String email_regex = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
    + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
  testString = emailAddress;
  b = testString.matches(email_regex);

  if (b) 
  {
    System.out.println("The email address \"" + emailAddress + "\" is valid.");
  }
  else 
  {
    System.out.println("The email address \"" + emailAddress + "\" IS NOT valid.");
  }
} while (!b);

Он работает так, как и предполагалось, за исключением того, что помечен как "test@test.com.com" или любой другой подобный формат электронной почты как недействительный. Предложения будут оценены!

РЕДАКТИРОВАТЬ: Я добавлю инструкции и полученные отзывы.

Инструкции: адрес электронной почты содержит символ @. Напишите программу, которая запрашивает ввод адреса электронной почты от пользователя и определяет, является ли он действительным адресом или нет. Это основано на наличии символа @ и пробелов в строке. Вам не нужно беспокоиться о любых других символах во входном слове. Выведите результат «Слово ЕСТЬ адрес электронной почты» или «Слово НЕ ЯВЛЯЕТСЯ адресом электронной почты»

Пример - Ввод: testuser@mydomain.com Вывод: Слово является адресом электронной почты

Ввод: Вывод my123user: Слово НЕ является адресом электронной почты

Мой отзыв:

Программа неправильно определяет test@test.com.com как действительный адрес электронной почты. Код не отформатирован должным образом, а отступ неправильный. Убедитесь, что ваш код имеет правильные отступы для каждого нового набора фигурных скобок (который указывает область действия).

1 Ответ

0 голосов
/ 27 апреля 2020

попробуйте ниже регулярного выражения, это работает для меня

String email_regex = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
                + "[A-Za-z0-9-]+(\\.com|abc\\.co|abc\\.nz|abc\\.org|abc\\.net)$";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...