개요
예제를 살펴보기 전에 먼저 테스트 시나리오를 이해할 필요가 있습니다. 로그인 페이지에서는 일반적으로 이메일 아이디와 비밀번호를 EditText(편집 텍스트)로부터 입력받습니다. 이때 사용자가 입력한 이메일 아이디가 올바른 형식인지 반드시 검증해야 합니다.
이번 예제에서는 EditText에 입력된 텍스트가 유효한 이메일 주소인지 확인하는 방법을 단계별로 알아보겠습니다.
1단계: 새 프로젝트 생성
Android Studio에서 File ⇒ New Project를 선택하여 새 프로젝트를 생성하고, 프로젝트 생성에 필요한 모든 세부 정보를 입력합니다.
2단계: 레이아웃 작성 (res/layout/activity_main.xml)
아래 코드를 res/layout/activity_main.xml 파일에 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
tools:context=".MainActivity">
<EditText
android:id="@+id/email"
android:hint="Email id"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/valid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check validation" />
</LinearLayout>
위 레이아웃에는 EditText와 버튼이 포함되어 있습니다. 사용자가 EditText에 이메일 아이디 또는 임의의 문자열을 입력한 뒤 버튼을 클릭하면, 입력된 문자열의 유효성을 검사하게 됩니다.
3단계: 메인 액티비티 구현 (src/MainActivity.java)
아래 코드를 src/MainActivity.java 파일에 추가합니다.
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
String emailRegEx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
emailRegEx = "^[A-Za-z0-9._%+\\-]+@[A-Za-z0-9.\\-]+\\.[A-Za-z]{2,4}$";
final EditText email = findViewById(R.id.email);
Button valid = findViewById(R.id.valid);
valid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Pattern pattern = Pattern.compile(emailRegEx);
Matcher matcher = pattern.matcher(email.getText().toString());
if (email.getText().toString().isEmpty()) {
Toast.makeText(MainActivity.this, "please enter email id", Toast.LENGTH_LONG).show();
} else if (!matcher.find()) {
Toast.makeText(MainActivity.this, "Not an email id", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "email id is valid", Toast.LENGTH_LONG).show();
}
}
});
}
}
위 코드에서는 자바의 Pattern과 Matcher 클래스를 활용해 이메일 정규식(regular expression)을 컴파일하고, EditText에 입력된 문자열이 해당 패턴과 일치하는지 확인합니다. 입력값이 비어 있으면 이메일 입력을 요청하고, 패턴이 일치하지 않으면 유효하지 않은 이메일임을, 일치하면 유효한 이메일임을 각각 Toast 메시지로 알려줍니다.
4단계: 매니페스트 설정
이 예제는 별도의 권한이나 특수 컴포넌트가 필요하지 않으므로, manifest.xml 파일은 수정할 필요가 없습니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 Android 모바일 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하고, 옵션 목록에서 본인의 모바일 기기를 선택하세요. 그러면 모바일 기기에 기본 화면이 표시됩니다.

첫 번째 예시에서는 EditText에 아무것도 입력하지 않은 상태에서 버튼을 클릭했습니다. 그 결과 "plz enter email id(이메일 아이디를 입력해 주세요)"라는 경고 메시지가 표시됩니다.

두 번째 예시에서는 잘못된 형식의 이메일 아이디를 입력했습니다. 이 경우 "Not an email id(유효한 이메일이 아닙니다)"라는 경고 메시지가 나타납니다.

세 번째 예시에서는 올바른 이메일 아이디를 입력했으며, "Email id is valid(이메일 아이디가 유효합니다)"라는 결과가 출력됩니다.
정리
이처럼 정규식 패턴과 Matcher를 조합하면 Android 앱에서 사용자가 입력한 이메일 주소의 유효성을 손쉽게 검증할 수 있습니다. 로그인, 회원가입 등 이메일 입력이 필요한 모든 화면에서 유용하게 활용할 수 있는 기본적인 검증 기법입니다.