Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में ईमेल एड्रेस कैसे वैलिडेट करें

रैगुलर एक्सप्रेशन (Regex) और Patterns API का उपयोग करके ईमेल वैलिडेशन

एंड्रॉइड में ईमेल एड्रेस वैलिडेट करने के लिए java.util.regex.Pattern और Matcher क्लासेज या android.util.Patterns हेल्पर क्लास का उपयोग किया जा सकता है। यह उदाहरण दोनों दृष्टिकोण दिखाता है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:text="ईमेल पता दर्ज करें:"
        android:textSize="16sp" />

    <EditText
        android:id="@+id/etEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:hint="example@domain.com"
        android:inputType="textEmailAddress"
        android:autofillHints="emailAddress" />

    <Button
        android:id="@+id/btnValidate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/etEmail"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:onClick="validateEmail"
        android:text="वैलिडेट करें" />

    <TextView
        android:id="@+id/tvResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/btnValidate"
        android:layout_marginTop="24dp"
        android:gravity="center"
        android:textSize="18sp"
        android:textStyle="bold" />

</RelativeLayout>

चरण 3: MainActivity में वैलिडेशन लॉजिक

package com.app.sample;

import android.os.Bundle;
import android.util.Patterns;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

    private EditText etEmail;
    private TextView tvResult;

    // कस्टम रेगेक्स पैटर्न (RFC 5322 सरलीकृत)
    private static final Pattern EMAIL_PATTERN = Pattern.compile(
            "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
    );

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etEmail = findViewById(R.id.etEmail);
        tvResult = findViewById(R.id.tvResult);
    }

    public void validateEmail(View view) {
        String email = etEmail.getText().toString().trim();

        if (email.isEmpty()) {
            tvResult.setText("कृपया ईमेल दर्ज करें");
            tvResult.setTextColor(0xFFFF0000); // लाल
            return;
        }

        // विधि 1: एंड्रॉइड बिल्ट-इन Patterns.EMAIL_ADDRESS (API 1+)
        boolean isValidAndroid = Patterns.EMAIL_ADDRESS.matcher(email).matches();

        // विधि 2: कस्टम रेगेक्स (अधिक नियंत्रण)
        boolean isValidCustom = EMAIL_PATTERN.matcher(email).matches();

        // विधि 3: अपाचे कॉमन्स वैलिडेटर (यदि लाइब्रेरी जोड़ी हो)
        // boolean isValidApache = EmailValidator.getInstance().isValid(email);

        String result;
        int color;

        if (isValidAndroid && isValidCustom) {
            result = "✓ वैध ईमेल पता";
            color = 0xFF4CAF50; // हरा
        } else {
            result = "✗ अवैध ईमेल पता";
            color = 0xFFFF0000; // लाल
        }

        tvResult.setText(result);
        tvResult.setTextColor(color);

        // डीबग जानकारी
        String debug = String.format(
                "एंड्रॉइड Patterns: %b\nकस्टम रेगेक्स: %b\nइनपुट: %s",
                isValidAndroid, isValidCustom, email
        );
        Toast.makeText(this, debug, Toast.LENGTH_LONG).show();
    }
}

विभिन्न रेगेक्स पैटर्न तुलना

पैटर्नरेगेक्सविशेषताएं
सरल^.+@.+\\..+$बेसिक @ और डॉट जांच
मानक (उपरोक्त)^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$अधिकांश सामान्य ईमेल के लिए अच्छा
RFC 5322 पूर्णबहुत जटिल (सैकड़ों वर्ण)सभी वैध ईमेल स्वीकार करता है लेकिन जटिल
HTML5 स्पेक^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$ब्राउज़र मानक

एंड्रॉइड का बिल्ट-इन Patterns.EMAIL_ADDRESS

// सरलतम उपयोग
if (Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
    // वैध
}

// ध्यान दें: Patterns.EMAIL_ADDRESS कुछ वैध ईमेल को अस्वीकार कर सकता है
// और कुछ अमान्य को स्वीकार कर सकता है (यह एक व्यावहारिक समझौता है)

TextInputLayout के साथ रियल-टाइम वैलिडेशन

मटेरियल डिज़ाइन में लाइव एरर दिखाने के लिए:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/tilEmail"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/etEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="ईमेल"
        android:inputType="textEmailAddress" />

</com.google.android.material.textfield.TextInputLayout>
// रियल-टाइम वैलिडेशन
etEmail.addTextChangedListener(new TextWatcher() {
    @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    @Override public void onTextChanged(CharSequence s, int start, int before, int count) {}

    @Override
    public void afterTextChanged(Editable s) {
        String email = s.toString().trim();
        TextInputLayout til = findViewById(R.id.tilEmail);

        if (!email.isEmpty() && !Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            til.setError("अमान्य ईमेल प्रारूप");
        } else {
            til.setError(null); // एरर साफ करें
            til.setErrorEnabled(false);
        }
    }
});

Kotlin एक्सटेंशन फंक्शन

// String एक्सटेंशन
fun String.isValidEmail(): Boolean {
    return Patterns.EMAIL_ADDRESS.matcher(this).matches()
}

// उपयोग
if (emailInput.text.toString().isValidEmail()) {
    // वैध
}

चरण 4: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.app.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.MaterialComponents.DayNight">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

सर्वोत्तम अभ्यास

  • क्लाइंट-साइड वैलिडेशन केवल UX के लिए - सर्वर पर भी वैलिडेट करें
  • Patterns.EMAIL_ADDRESS अधिकांश मामलों के लिए पर्याप्त है
  • अत्यधिक सख्त रेगेक्स वैध ईमेल को अस्वीकार कर सकते हैं (उदाहरण: user+tag@example.com, user@sub.domain.co.uk)
  • अंतर्राष्ट्रीयकृत ईमेल (यूनिकोड) के लिए विशेष हैंडलिंग चाहिए
  • यूजर को टाइप करते समय फीडबैक दें (TextInputLayout + TextWatcher)
नोट: RFC 5322 के अनुसार पूरी तरह से मान्य ईमेल वैलिडेशन अत्यधिक जटिल है। व्यावहारिक ऐप्स के लिए एंड्रॉइड का Patterns.EMAIL_ADDRESS या एक उचित सरलीकृत रेगेक्स पर्याप्त है। अंतिम सत्यापन हमेशा सर्वर-साइड (पुष्टिकरण ईमेल भेजकर) करें।
  1. अस्थायी ईमेल पता कैसे बनाएं अस्थायी ईमेल पता कैसे बनाएं

    Bcc Address Field पर क्लिक करना चाहेंगे या Option/Alt + Command + B दबाएं। अब आप उन लोगों के पते दर्ज कर सकते हैं जिन्हें आप ईमेल पर ब्लाइंड कॉपी करना चाहते हैं और आश्वस्त हो सकते हैं कि कोई भी नहीं देख पाएगा कि किसे ईमेल किया गया है। लेकिन, हम मानते हैं कि आप ऐसा करने के तरीके के विवरण नहीं ढूंढ रह

  1. अपना IP एड्रेस छुपाएं: एंड्रॉइड पर प्राइवेसी सुरक्षित करने की गाइड अपना IP एड्रेस छुपाएं: एंड्रॉइड पर प्राइवेसी सुरक्षित करने की गाइड

    आप वेब ब्राउज़ करने के लिए अपने एंड्रॉइड डिवाइस का उपयोग करना पसंद कर सकते हैं क्योंकि यह अधिक सुविधाजनक है, और आप अपने पीसी या डेस्कटॉप का उपयोग करने की तुलना में अपनी उंगलियों पर आराम से वेब ब्राउज़ कर सकते हैं। हालांकि, आप गोपनीयता चिंताओं के लिए या अपने ब्राउज़िंग अनुभव को बेहतर बनाने के लिए अप

  1. अपनी गोपनीयता सुरक्षित करें: एंड्रॉयड पर IP एड्रेस छिपाने की स्टेप-बाय-स्टेप गाइड अपनी गोपनीयता सुरक्षित करें: एंड्रॉयड पर IP एड्रेस छिपाने की स्टेप-बाय-स्टेप गाइड

    IP एड्रेस इंटरनेट की बात आने पर सबसे लोकप्रिय शब्दों में से एक है। आपने IP एड्रेस के बारे में सुना होगा लेकिन शायद इंटरनेट की बाइबिल से अधिक जानने का समय नहीं मिला। एंड्रॉयड पर IP एड्रेस छिपाने के बारे में अपना सिर खपाने से पहले, आपको किसी भी डिवाइस पर IP के बेसिक्स और कामकाज के बारे में पता होना चा