본문 바로가기

Front-End/Android

[Android] 회원가입 및 로그인 구현 시 이메일 형식 검사

728x90

회원가입 및 로그인에서 이메일을 입력할 때 이메일 형식을 검사해 형식이 맞지 않을 경우 경고문구를 띄우는 기능을 구현해보겠습니다.

 

 

1. 먼저 이메일 형식을 검사할 이메일 정규식은 아래와 같습니다.

 

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

 

 

2. 이메일 형식 검사를 하는 checkEmail() 함수를 만들어보면 아래와 같습니다.

 

- 이메일을 입력하는 EditText에 입력한 값을 email 변수에 저장합니다.

- 이메일 정규식과 email 값의 패턴이 맞는지 검사해 true, false 리턴값을 받습니다.

- 이메일 형태가 아닐 경우 (false), TextView에 이메일 형식을 확인하라는 문구를 띄웁니다. 색깔은 빨간색으로 설정하였습니다. 

 

// 이메일 형식 검사
fun checkEmail(): Boolean {
    var email = binding.emailEdit.text.toString()
    val pattern = Pattern.matches(emailValidation, email) // 서로 패턴이 맞는지

    if (pattern) { // 이메일 형태가 맞으면
        binding.emailValidation.text = ""
        return true
    } else { // 이메일 형태가 아니면 아래에 문구를 띄운다.
        binding.emailValidation.text = "* 이메일 형식을 확인해주세요!"
        binding.emailValidation.setTextColor(-65536)
        return false
    }
}

 

 

다음과 같이 함수를 만든 후, 앞선 포스트에서 구현했던 doLogin(), doSignUp() 함수에서 각각 해당 함수를 호출해주면 됩니다.

 

1) doLogin()

 

private fun doLogin(userEmail: String, userPw: String) {
    // 이메일 형식 다시 한 번 체크
    if (!checkEmail()) { // 이메일 형식이 아닐 경우
        Toast.makeText(this, "이메일 형식을 확인해주세요!", Toast.LENGTH_SHORT).show()
    }
    
	// 생략..
}

 

 

2) doSignUp()

회원가입에서는 OnCreate()에서 이메일을 입력하는 EditText의 text가 바뀔 때마다 호출되게 구현하기 위해, emailSignUpEdit 에 TextWatcher을 연결하였습니다.

 

override fun onCreate(savedInstanceState: Bundle?) {
    // 생략..

    val email = binding.emailSignUpEdit.text

    // 생략..

    // emailSignUpEdit 에 TextWatcher 연결
    emailSignUpEdit.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(p0: Editable?) {
            // text가 변경된 후 호출
            // p0 : 변경 후 문자열
        }

        override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            // text가 변경되기 전 호출
            // p0 : 변경 전 문자열
        }

        override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            // text가 바뀔 때마다 호출
            checkEmail()
        }
    })
    
    // 생략..
}

 

 

이렇게 이메일 형식 검사 기능까지 추가하여 안드로이드에서 파이어베이스를 연동하여 회원가입 및 로그인 기능을 완성하였습니다.

728x90