Проверка адреса электронной почты в Android на EditText [дубликат]

этот вопрос уже есть ответ здесь:

как мы можем выполнить Email Validation on edittext на android ? Я прошел через google & SO, но я не нашел простого способа проверить его.

9 ответов


public static boolean isValidEmail(CharSequence target) {
    return (!TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches());
}

Edit:: он будет работать на Android 2.2+ и далее !! Edit: добавлено отсутствует;


для проверки электронной почты у нас есть много способов,но простой и легкий способ-это два метода.

1- используя EditText(....).addTextChangedListener который продолжает срабатывать на каждом входе в EditText box i.e email_id недействителен или действителен

/**
 * Email Validation ex:- tech@end.com
*/


final EditText emailValidate = (EditText)findViewById(R.id.textMessage); 

final TextView textView = (TextView)findViewById(R.id.text); 

String email = emailValidate.getText().toString().trim();

String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\.+[a-z]+";

emailValidate .addTextChangedListener(new TextWatcher() { 
    public void afterTextChanged(Editable s) { 

    if (email.matches(emailPattern) && s.length() > 0)
        { 
            Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
            // or
            textView.setText("valid email");
        }
        else
        {
             Toast.makeText(getApplicationContext(),"Invalid email address",Toast.LENGTH_SHORT).show();
            //or
            textView.setText("invalid email");
        }
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // other stuffs 
    } 
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    // other stuffs 
    } 
}); 

2- простейший метод с использованием if-else состояние. Возьмите строку EditText box с помощью getText () и сравните с шаблоном, предоставленным для электронной почты. Если шаблон не совпадает или macthes, функция onclick кнопки тост сообщение. Он не будет срабатывать на каждом входе символа в поле EditText . простой пример показан ниже.

final EditText emailValidate = (EditText)findViewById(R.id.textMessage); 

final TextView textView = (TextView)findViewById(R.id.text); 

String email = emailValidate.getText().toString().trim();

String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\.+[a-z]+";

// onClick of button perform this simplest code.
if (email.matches(emailPattern))
{
Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
}
else 
{
Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
}

Я сделал так:

добавить метод to проверить, является ли адрес электронной почты is действительный или не:

private boolean isValidEmaillId(String email){

    return Pattern.compile("^(([\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})$").matcher(email).matches();
     }

теперь проверьте с строка of полей EditText:

if(isValidEmaillId(edtEmailId.getText().toString().trim())){
  Toast.makeText(getApplicationContext(), "Valid Email Address.", Toast.LENGTH_SHORT).show();
}else{       
  Toast.makeText(getApplicationContext(), "InValid Email Address.", Toast.LENGTH_SHORT).show();
}

сделал


использовать этот метод для проверки формата электронной почты. Передайте электронную почту как строку, она возвращает true если формат правильный в противном случае false.

/**
 * validate your email address format. Ex-akhi@mani.com
 */
public boolean emailValidator(String email) 
{
    Pattern pattern;
    Matcher matcher;
    final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$";
    pattern = Pattern.compile(EMAIL_PATTERN);
    matcher = pattern.matcher(email);
    return matcher.matches();
}

попробуйте это:

if (!emailRegistration.matches("[a-zA-Z0-9._-]+@[a-z]+.[a-z]+")) {
   editTextEmail.setError("Invalid Email Address");
}

используйте этот метод для проверки электронной почты : -

 public static boolean isEditTextContainEmail(EditText argEditText) {

            try {
                Pattern pattern = Pattern.compile("^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$");
                Matcher matcher = pattern.matcher(argEditText.getText());
                return matcher.matches();
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }

Дайте мне знать, если у вас есть какие-либо вопросы ?


public static boolean isEmailValid(String email) {
    boolean isValid = false;

    String expression = "^[\w\.-]+@([\w\-]+\.)+[A-Z]{2,4}$";
    CharSequence inputStr = email;

    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);
    if (matcher.matches()) {
        isValid = true;
    }
    return isValid;
}

Это пример метода, который я создал для проверки адресов электронной почты, если переданный строковый параметр является допустимым адресом электронной почты, он возвращает true, иначе возвращается false.

private boolean validateEmailAddress(String emailAddress){
    String  expression="^[\w\-]([\.\w])+[\w]+@([\w\-]+\.)+[A-Z]{2,4}$";  
       CharSequence inputStr = emailAddress;  
       Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);  
       Matcher matcher = pattern.matcher(inputStr);  
       return matcher.matches();
}

попробуй такое

public static final Pattern EMAIL_ADDRESS_PATTERN = Pattern.compile(

              "[a-zA-Z0-9\+\.\_\%\-\+]{1,256}" +
              "\@" +
              "[a-zA-Z0-9][a-zA-Z0-9\-]{0,64}" +
              "(" +
              "\." +
              "[a-zA-Z0-9][a-zA-Z0-9\-]{0,25}" +
              ")+"
          );

и в tne редактировать текст

final String emailText = email.getText().toString();
EMAIL_ADDRESS_PATTERN.matcher(emailText).matches()