Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách kiểm tra định dạng Email trong EditText Android

Giới thiệu

Ví dụ này minh họa cách validate (kiểm tra hợp lệ) địa chỉ email nhập vào EditText trong Android bằng Regular Expression (Regex).

Bước 1: Tạo dự án mới

Android Studio → File → New Project.

Bước 2: Giao diện (res/layout/activity_main.xml)

<?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="Nhập Email"
        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="Kiểm tra"
        android:layout_height="wrap_content" />

</LinearLayout>

Bước 3: Logic validate (src/MainActivity.java)

package com.example.andy.myapplication;

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.Toast;

public class MainActivity extends AppCompatActivity {
    int view = R.layout.activity_main;
    Button button;
    EditText emailId;
    // Regex pattern cho email cơ bản
    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) {
                String input = emailId.getText().toString().trim();

                if (input.isEmpty()) {
                    Toast.makeText(getApplicationContext(), "Vui lòng nhập email", Toast.LENGTH_SHORT).show();
                } else if (input.matches(emailPattern)) {
                    Toast.makeText(getApplicationContext(), "Email hợp lệ", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Email không hợp lệ", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

Giải thích Regex Pattern

String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
  • [a-zA-Z0-9._-]+: Phần trước @ (chữ, số, dấu chấm, gạch dưới, gạch ngang), ít nhất 1 ký tự
  • @: Ký tự @ bắt buộc
  • [a-z]+: Tên miền (chỉ chữ thường), ít nhất 1 ký tự
  • \\.+: Dấu chấm (escaped), ít nhất 1
  • [a-z]+: Phần mở rộng (.com, .vn...), ít nhất 1 ký tự
⚠️ Hạn chế: Regex trên đơn giản, không cover hết các trường hợp email hợp lệ theo chuẩn RFC 5322 (ví dụ: sub-domain, TLD dài, ký tự đặc biệt...).

Khuyến nghị: Dùng android.util.Patterns.EMAIL_ADDRESS có sẵn:
import android.util.Patterns;
...
if (Patterns.EMAIL_ADDRESS.matcher(input).matches()) {
    // Email hợp lệ
}

Chạy ứng dụng

Chạy app → Nhập email hợp lệ (vd: test@example.com) → Nhấn "Kiểm tra" → Toast "Email hợp lệ". Nhập sai (vd: test@.com, test@example) → Toast "Email không hợp lệ".