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

【Android】EditTextの入力値がメールアドレス形式かどうかを判定する方法

はじめに:なぜメールアドレスのバリデーションが必要か

Androidアプリのログイン画面や会員登録画面では、通常、EditTextからメールアドレスとパスワードを入力してもらいます。しかし、ユーザーが誤った形式の文字列を入力したまま処理を進めてしまうと、後続の認証処理でエラーが発生したり、確認メールが届かないといった問題につながります。

そのため、EditTextから取得した文字列が「正しいメールアドレス形式かどうか」を事前にチェックするバリデーション(入力値検証)は、アプリ開発における重要なステップです。

本記事では、正規表現(Pattern / Matcher)を使って、EditTextの入力値がメールアドレスとして有効かどうかを判定する方法を、実際のコード例とともに解説します。

実装手順

Step 1:プロジェクトの新規作成

Android Studioを起動し、「File → New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトのセットアップを完了させてください。

Step 2:レイアウトファイル(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と、バリデーションを実行するButtonを1つずつ配置しています。ユーザーがEditTextにメールアドレスまたは任意の文字列を入力し、ボタンをタップすると、その文字列が有効なメールアドレスかどうかがチェックされます。

Step 3: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クラスを使った正規表現による判定です。変数 emailRegEx に定義したパターンは、次のような構成になっています。

  • ローカル部:英数字および「._%+-」の記号を1文字以上
  • 「@」マークを必ず含む
  • ドメイン部:英数字・ハイフン・ドットの組み合わせ
  • TLD(トップレベルドメイン):アルファベット2〜4文字

ボタンがクリックされると、まず入力欄が空かどうかを確認し、空であれば「please enter email id」と表示します。空でなければ正規表現とのマッチングを行い、一致しなければ「Not an email id」、一致すれば「email id is valid」とToastで結果を通知します。

Step 4:アプリの実行と動作確認

manifest.xml ファイルには特別な変更は不要です。実機のAndroidスマートフォンをPCに接続し、Android Studioのツールバーにある「Run」アイコンをクリックしてアプリを起動しましょう。デバイスを選択すると、アプリが端末上で起動します。

動作確認の結果

実際にアプリを動かすと、入力内容に応じて以下の3パターンの挙動が確認できます。

ケース1:未入力の場合

何も入力せずにボタンをタップすると、「please enter email id」(メールアドレスを入力してください)という警告が表示されます。

ケース2:不正な形式の場合

誤った形式のメールアドレスを入力すると、「Not an email id」(メールアドレスではありません)という警告が表示されます。

ケース3:正しい形式の場合

適切なメールアドレスを入力すると、「Email id is valid」(有効なメールアドレスです)という結果が出力されます。

まとめ

このように、PatternとMatcherによる正規表現マッチングを組み合わせることで、EditTextの入力値がメールアドレス形式として有効かどうかを簡単に判定できます。ログイン機能や新規登録機能を持つアプリでは、サーバーへリクエストを送る前にクライアント側でこのようなバリデーションを行うことで、ユーザー体験の向上や無駄な通信の削減につながります。ぜひ自分のプロジェクトにも取り入れてみてください。

  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ベースのネットワーク上で他の端末と通信でき