2015-10-28 2 views
-1

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

Я пробовал много, но не смог заставить его работать. Помогите пожалуйста :)

Текущий код:

public boolean isEmailValid(String email) { 
    String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" 
      + "\\.(abc.com|abc.co|abc.nz|abc.org)$"; 

    Pattern pattern = Pattern.compile(regExpn, Pattern.CASE_INSENSITIVE); 
    Matcher matcher = pattern.matcher(email); 

    return matcher.matches(); 
} 

Благодарности

Оригинал регулярное выражение для общей проверки электронной почты:

String regExpn = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@" 
      + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" 
      + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\." 
      + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?" 
      + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" 
      + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$"; 
+0

Можете ли вы после того, что вы пробовали? –

+0

@JaredRummler Привет, я обновил вопрос. пожалуйста, проверьте –

ответ

1

Попробуйте

(abc\\.com|abc\\.co|abc\\.nz|abc\\.org) 

вместо

\\.(abc.com|abc.co|abc.nz|abc.org) 

\. означает буквально точку, а не «каждый персонаж». \\. требуется для Java, чтобы избежать обратной косой черты, чтобы получить \. как регулярное выражение.

РЕДАКТИРОВАТЬ: Удаление \\. в передней и спасаясь домена точка является достаточным, регулярное выражение и образцы обновление:

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

Так

 System.out.println(isEmailValid("[email protected]")); 
     System.out.println(isEmailValid("[email protected]")); 
     System.out.println(isEmailValid("[email protected]")); 
     System.out.println(isEmailValid("[email protected]")); 
     System.out.println(isEmailValid("[email protected]")); 

приносит

false 
true 
true 
true 
false 
+0

Привет, Спасибо за помощь, но он все еще не работает –

+0

@iitum studant Что не работает? Можете ли вы предоставить метод тестирования, который вы используете? Я только посмотрел на предмет домена, а не на регулярное выражение, которое, как я понял, вы нашли в другом месте. Работало ли это регулярное выражение до того, как вы распространили его на свой список доменов? – yasd

+0

Привет, я обновил вопрос с оригинальным регулярным выражением, которое я использовал для проверки общих адресов электронной почты, и он отлично работал. Для модифицированного я использовал [email protected], но он не работал –

Смежные вопросы