Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android】EditTextでメールアドレスの形式を検証する方法を実装例つきで解説

はじめに

この記事では、AndroidアプリにおいてEditTextに入力されたメールアドレスの形式が正しいかどうかを検証する方法を、実際のコード例とともにわかりやすく解説します。ユーザー登録フォームやお問い合わせフォームなど、メールアドレスの入力を受け付ける場面では、入力値のバリデーション(妥当性チェック)は必須の処理です。

今回は、正規表現パターンを使ってシンプルかつ確実にメールアドレスをチェックする実装方法を紹介します。

ステップ1:新規プロジェクトを作成する

まずはAndroid Studioで新しいプロジェクトを作成しましょう。メニューから File → New Project を選択し、必要な項目をすべて入力してプロジェクトを作成してください。テンプレートには「Empty Activity」を選んでおくとスムーズです。

ステップ2:レイアウトファイル(activity_main.xml)を編集する

次に、res/layout/activity_main.xml に以下のコードを追加します。メールアドレスを入力するためのEditTextと、検証を実行するButtonを配置したシンプルな縦並びレイアウトです。

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    android:id = "@+id/parent"
    xmlns:tools = "https://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity"
    android:gravity = "center"
    android:orientation = "vertical">
    <EditText
        android:id = "@+id/emailId"
        android:hint = "Enter Email id"
        android:layout_margin = "20dp"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content" />
    <Button
        android:id = "@+id/text"
        android:textSize = "18sp"
        android:textAlignment = "center"
        android:layout_width = "wrap_content"
        android:textColor = "#000"
        android:text = "Check validation"
        android:layout_height = "wrap_content" />
</LinearLayout>

上記コードでは、EditTextButton をひとつずつ配置しています。ユーザーがボタンをタップすると、EditTextに入力された内容を取得し、そのデータが正しいメールアドレスの形式かどうかを判定します。

ステップ3:MainActivity.java に検証ロジックを実装する

続いて、src/MainActivity.java に以下のコードを追加します。

package com.example.andy.myapplication;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    int view = R.layout.activity_main;
    Button button;
    EditText emailId;
    String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(view);
        button = findViewById(R.id.text);
        emailId = findViewById(R.id.emailId);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(emailId.getText().toString().isEmpty()) {
                    Toast.makeText(getApplicationContext(),"enter email address",Toast.LENGTH_SHORT).show();
                }else {
                    if (emailId.getText().toString().trim().matches(emailPattern)) {
                        Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }
}

検証ロジックのポイント

このコードの核となるのは、以下の正規表現パターンを使ったバリデーション部分です。

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

このパターンの意味は以下の通りです。

  • [a-zA-Z0-9._-]+:ローカル部(@より前)には英数字・ドット・アンダースコア・ハイフンが1文字以上使える
  • @:必ず「@」を1つ含む
  • [a-z]+\.+[a-z]+:ドメイン部は「英字+ドット+英字」の構成になっていること

ボタンがクリックされると、まず入力欄が空でないかを確認し、空の場合は「メールアドレスを入力してください」という趣旨のToastを表示します。入力がある場合は、前後の空白を取り除いたうえで matches() メソッドにより正規表現との一致を判定し、結果に応じて「有効なメールアドレス」または「無効なメールアドレス」をToastで通知します。

アプリを実行して動作を確認する

それでは、実際にアプリを起動してみましょう。実機のAndroidスマートフォンをPCに接続している前提で説明します。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーのRun(再生)アイコンをクリックします。接続済みの端末を選択すると、スマートフォン側にアプリが起動表示されます。

まず、正しい形式のメールアドレスを入力してボタンをタップしてみてください。「valid email address(有効なメールアドレスです)」という検証結果がToastで表示されます。

【Android】EditTextでメールアドレスの形式を検証する方法を実装例つきで解説

次に、意図的に誤った形式のメールアドレスを入力してボタンをタップすると、「Invalid email address(無効なメールアドレスです)」というメッセージが表示されることが確認できます。

【Android】EditTextでメールアドレスの形式を検証する方法を実装例つきで解説

まとめ

本記事では、AndroidのEditTextに入力されたメールアドレスを、正規表現パターンと matches() メソッドを使って検証する基本的な方法を紹介しました。ポイントは以下の3つです。

  • メールアドレス用の正規表現パターンを定義する
  • 入力が空でないかを先にチェックする
  • trim()で余分な空白を除去してから判定する

この手法はログイン画面や会員登録フォームなど、さまざまな場面で応用できます。より厳密な検証が必要な場合は、android.util.Patterns.EMAIL_ADDRESS を利用する方法や、サーバーサイドでの確認メール送信によるダブルオプトイン方式と組み合わせるのもおすすめです。

  1. 【Android】メールアドレスを検証する方法を解説!正規表現を使ったバリデーション実装の手順

    この記事では、Androidアプリでユーザーが入力したメールアドレスの形式を検証(バリデーション)する方法を、サンプルコード付きで解説します。正規表現を使ったシンプルな手法なので、JavaでAndroid開発を始めたばかりの方にもおすすめの内容です。 作成するアプリの概要 画面上のEditTextにメールアドレスを入力し、「検証」ボタンをタップすると、入力内容がメールアドレスとして妥当な形式かどうかを判定し、その結果をToastで表示します。 ステップ1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な設

  2. AndroidでIPアドレスを非表示にする方法|VPN・Tor・プロキシの使い方を徹底解説

    インターネットを語るうえで欠かせない用語の一つが「IPアドレス」です。名前は聞いたことがあっても、その仕組みまで詳しく理解する機会は意外と少ないもの。AndroidでIPアドレスを非表示にする前に、まずはIPアドレスの基本と仕組みを押さえておきましょう。 そもそもIPアドレスとは? 「IP」は「Internet Protocol(インターネットプロトコル)」の略で、ウェブ閲覧をはじめとするインターネット通信全体を支える一連の規則・プロトコルのことです。IPアドレスとは、ネットワークに接続された機器に割り当てられる固有の識別番号であり、これによってIPベースのネットワーク上で他の端末と通信でき