#안드로이드 TextWatcher를 이용한 이메일 형식 체크(email validation)

2019. 12. 4. 18:09 개발 이야기/android

 

로그인이나 회원가입 시 이메일!

혹은 조합이 필요한 ID를 계속 확인하면서

 

원하는 규칙을 갖췄을 때만 입력이 가능하도록 만들고 싶다면!

 

이를 실시간으로 검증하고 싶다면!

 

 

 

TextWatcher를 사용하면 되는데요!

 

TextWahtcher를 이용한 validation을 하는 방법을 보도록 하겠습니다

 

이메일 형식이 아닐 때 !

라인이 빨간색으로 변한 것을 확인할 수 있는데요!

 

그렇다면

원하는 이메일 형식일 때! 

원하는 이메일 형식을 갖추게 되면 까맣게 변하는 것을 볼 수 있습니다.

 

 

자 그럼 어떻게 구현할까요?

 

public class ResetPasswordActivity extends AppCompatActivity {

    private EditText inputEmail;
    private Button btnReset, btnFindEmail;
    private ViewGroup btnBack;
    private String emailValidation = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
//    private ProgressBar progressBar;
    private RelativeLayout progressBarl;
    private String email;

 

이메일 형식을 잡아내는 정규식을 만들어줍니다!

// 이메일 검증 정규식
"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"

//비밀번호 조합 정규식
"^.*(?=^.{8,20}$)(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$"

 

 

그러고 나서 특정 email이라는 id를 가진 editText를 계속해서 바라보는 

TextWatcher를 생성해줍니다!

 

 

아래와 같이 inputEmail의 TextChangedListener를 붙여주고 TextWatcher를 만들어줍니다

        inputEmail = findViewById(R.id.email);
        inputEmail.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {
                email = inputEmail.getText().toString().trim();
                if (email.matches(emailValidation) && s.length() > 0) {
                    inputEmail.setBackgroundResource(R.drawable.edt_bg_selector);
                    btnReset.setBackgroundColor(Color.parseColor("#007ed6"));
                } else {
                    inputEmail.setBackgroundResource(R.drawable.edt_bg_wrong_validate);
                    btnReset.setBackgroundColor(Color.parseColor("#c0c0c0"));
                }
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }
        });

 

email의 기입된 스트립을 입력이 있을 때마다 가져와서

정규식에 부합 여부에 따라 라인의 색을 변경하도록 해줍니다!

 

email.matches(emailValidation)

 

이렇게 해주면 즉시즉시 입력되는 스트링에 맞게 원하는 정규식과 부합하는지 알 수 있는데요!

 

이 방법으로 비밀번호 입력 시 3개 조합(영문 특수문자 숫자)

등이 이루어지는지를 확인할 수도 있고

 

다양한 곳에 사용할 수 있습니다!