Search code examples
androidandroid-edittextemail-validation

Email Address Validation in Android on EditText


How can we perform Email Validation on edittext in android ? I have gone through google & SO but I didn't find out a simple way to validate it.


Solution

  • To perform Email Validation we have many ways,but simple & easiest way are two methods.

    1- Using EditText(....).addTextChangedListener which keeps triggering on every input in an EditText box i.e email_id is invalid or valid

    /**
     * Email Validation ex:- [email protected]
    */
    
    
    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- Simplest method using if-else condition. Take the EditText box string using getText() and compare with pattern provided for email. If pattern doesn't match or macthes, onClick of button toast a message. It ll not trigger on every input of an character in EditText box . simple example shown below.

    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();
    }