আমি কীভাবে একটি ইমেল ঠিকানা যাচাই করব?


320

অ্যান্ড্রয়েডে কোনও ইমেল ঠিকানা (যেমন কোনও ব্যবহারকারী ইনপুট ক্ষেত্র থেকে) যাচাই করার জন্য একটি ভাল কৌশল কী? org.apache.commons.omotator.routines.EmailValidator উপলভ্য বলে মনে হচ্ছে না। ইতিমধ্যে অ্যান্ড্রয়েডের অন্তর্ভুক্ত এমন অন্য কোনও লাইব্রেরি কি করছে যা আমাকে রেজিপ্যাক্স ব্যবহার করতে হবে?


দয়া করে এটিকে উল্লেখ করুন, এটি আপনাকে সহায়তা করতে পারে: stackoverflow.com/questions/12947620/…
হিরেন প্যাটেল

1
@ ব্যবহারকারী2757064 ভাল এই প্রশ্নটি আপনার লিঙ্ক করা অন্যান্য প্রশ্নে সহায়তা করবে। এই প্রশ্নটি এর 3 বছর পরে জিজ্ঞাসা করা হয়েছিল। :)
সুফিয়ান

উত্তর:


48

কোনও রেগ-প্রাক্তন ব্যবহার করবেন না।

স্পষ্টত নীচে একটি রেগ-এক্স রয়েছে যা আরএফসি 2822 অনুসারে বেশিরভাগ ই-মেইল ঠিকানাগুলিকে সঠিকভাবে বৈধ করে তোলে (এবং "user@gmail.com.nospam" এর মতো বিষয়গুলিতে ব্যর্থ হবে, যেমন org.apache.commons.uthorator হিসাবে থাকবে। routines.EmailValidator)

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

কোনও প্রদত্ত ঠিকানায় একটি নিশ্চিতকরণ ইমেল প্রেরণের জন্য সম্ভবত কোনও ই-মেইলকে বৈধতা দেওয়ার সহজতম উপায় এবং এটি বাউন্স হয়ে যায় তবে এটি বৈধ নয়।

আপনি যদি কিছু বেসিক চেক সম্পাদন করতে চান তবে আপনি কেবল এটি ফর্মটিতে পরীক্ষা করতে পারেন *@*

আপনার যদি কিছু ব্যবসায়িক লজিক নির্দিষ্ট বৈধতা থাকে তবে আপনি এটি করতে পারেন একটি রেজেক্স ব্যবহার করে, উদাহরণস্বরূপ অবশ্যই একটি gmail.com অ্যাকাউন্ট বা কিছু হতে হবে।


5
আমি জানি এই উত্তরটি প্রায় দু'বছর পুরানো, কিন্তু যখন আমি এই রেজেেক্সটি রিজেক্সার ডট কম ব্যবহার করে চেষ্টা করি তখন এটি বৈধতা দেয় user@gmail.com.nospamএবং এমনকি .museum এর মতো দীর্ঘতর tlds হয়। আমি কিছু অনুপস্থিত করছি? আমি আমার ব্যবহারকারীর কাউকে তাদের বৈধ ই-মেইল ঠিকানাটি বৈধ করে ব্যর্থ করে বাধা দিতে চাই না, তবে মনে হয় যে এটি আমি ভাবতে পারি তার জন্য কাজ করছে।
বব ভর্ক 6

@ Bob সার্ভারে ইমেল ঠিকানাটি বৈধতা দিন .. চার্লস অ্যাপ্লিকেশনটি এটি একই রকম পরীক্ষা করে দেখুন
হর্ষ এমভি

107
আপনি কেন এই উত্তরটি "কোনও রেজি-প্রাক্তন ব্যবহার করবেন না" দিয়ে শুরু করেন এবং তারপরে একটি রেজি-এক্স সরবরাহ করার জন্য এগিয়ে যান তা আমি কিছুটা বিভ্রান্ত।
হোয়েটল

7
পড়তে থাকুন দয়া করে। আরও ভাল সমাধান নীচে যা রেজেস ব্যবহার করে না।
loeschg

1
@ গ্লেন এটি কি অ্যান্ড্রয়েডের প্যাটার্নের জন্য সত্য হবে ? EMAIL_ADDRESS ? বিকাশকারী.অ্যান্ড্রয়েড.
com

1036

আর একটি বিকল্প হ'ল এপিআই স্তর 8 দিয়ে শুরু হওয়া প্যাটার্নগুলি :

public final static boolean isValidEmail(CharSequence target) {
  if (TextUtils.isEmpty(target)) {
    return false;
  } else {
    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
  }
}

প্যাটার্নগুলি দেখারযোগ্য উত্স

অথবা

@ অ্যাডভানডেনহোভেনের একটি লাইন সমাধান:

public final static boolean isValidEmail(CharSequence target) {
  return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

30
+1, তবে আমি এর (target == null)সাথে প্রতিস্থাপন করতে পছন্দ করি TextUtils.isEmpty(target):)
হিউসাইন

35
এর মতো উত্তরগুলি কেন আমি বেশিরভাগ ভোট দিয়ে উত্তরগুলির পরিবর্তে, উপরে প্রদর্শিত গ্রহণযোগ্য উত্তরগুলি অপছন্দ করি।
যিশুরুন

11
এটিকে কেবল এক লাইনে একত্রিত করার জন্য কী আরও বোঝার (পাঠযোগ্যতা বুদ্ধিমান) ধারণা তৈরি করতে পারে না: ফেরত পাঠ্য!
অ্যাডাম ভ্যান ডেন হোভেন

1
@ হউসাইন, সত্য তবে উপরের পদ্ধতিটি বুলিয়ান দেয় কারণ এটি মিথ্যা হলে আমাদের কাছে সেই তথ্য থাকে না। যাইহোক, ফাংশনের অভ্যন্তর থেকে কেউ ইউআই টোস্ট বা আপডেট করতে পারে (অবশ্যই ইউআই থ্রেডে চালানো উচিত)। আমার মতো যারা, যারা প্রোগ্রামিক্যালি প্রাপ্ত ইমেলটিকে বৈধতা দিচ্ছেন এবং কোনও ব্যবহারকারীর ইন্টারঅ্যাকশন ছাড়াই, আমরা কেবল '== নাল' দিয়ে আটকে রাখতে পারি এবং বেশিরভাগ ক্ষেত্রে বেশিরভাগ ক্ষেত্রে ঘড়ি চক্র সংরক্ষণ করতে পারি।
এজে

2
সাবধান হও. এই ম্যাচার email@111.222.333.44444একটি বৈধ ইমেল হিসাবে গ্রহণ করে
জোয়াকুইন ইয়ারচুক

101

পরবর্তী প্যাটার্নটি কে -9 মেইলে ব্যবহৃত হয়েছে:

public static final Pattern EMAIL_ADDRESS_PATTERN = Pattern.compile(
          "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
          "\\@" +
          "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
          "(" +
          "\\." +
          "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
          ")+"
      );

আপনি ফাংশন ব্যবহার করতে পারেন

private boolean checkEmail(String email) {
        return EMAIL_ADDRESS_PATTERN.matcher(email).matches();
}

74
কেন ব্যবহার android.util.Patterns.EMAIL_ADDRESSকরবেন না ?
সের্গেই মেটলভ

9
কারণ এটি কেবলমাত্র এপিআই লেভেল 8 এর পর থেকেই রয়েছে
আন্দ্রেই বুনিয়েউ 20'12

এটি আমাকে সরল উত্তরের জন্য অনেক ধন্যবাদ এবং +1 সাহায্য করেছে .. :)
দীপ্তি

এফওয়াইআই: চরিত্রের ক্লাসগুলির অভ্যন্তরে মেটাচার্যাক্টরা কম কম হয় এবং কোনও সীমান্তে রাখলে হাইফেন স্বয়ংক্রিয়ভাবে পালিয়ে যায়, আপনি প্রথম শ্রেণিতে [a-zA-Z0-9+._%-]এবং অন্যদেরকে সহজ করতে পারবেন[a-zA-Z0-9-]
রবিন

এটি কেবলমাত্র সত্য ফিরে আসে যদি ইমেল সিনট্যাক্সটি ইমেলের মতো হয়, আমি এটি iথেকে অপসারণের চেষ্টা করেছি @gmail.comসত্যই ফিরে আসবে। `@yaho.com এ একই।
RoCk RoCk

70

এপিআই 8 (অ্যান্ড্রয়েড 2.2) যেহেতু একটি প্যাটার্ন রয়েছে: android.util.Patterns.EMAIL_ADDRESS http://developer.android.com/references/android/util/Patterns.html

সুতরাং আপনি এটি আপনার ইমেল স্ট্রিং যাচাই করতে ব্যবহার করতে পারেন:

private boolean isValidEmail(String email) {
    Pattern pattern = Patterns.EMAIL_ADDRESS;
    return pattern.matcher(email).matches();
}

ইমেলটি বৈধ হলে সত্যটি ফেরত দেয়

ইউপিডি: এই প্যাটার্নের উত্স কোডটি হ'ল:

public static final Pattern EMAIL_ADDRESS
    = Pattern.compile(
        "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
        "\\@" +
        "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
        "(" +
            "\\." +
            "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
        ")+"
    );

এখানে উল্লেখ করুন: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Patterns.java

সুতরাং আপনি এপিআই <8 এর সাথে সামঞ্জস্য করার জন্য এটি নিজেকে তৈরি করতে পারেন।


45

আমাদের কাছে এখন সহজ ইমেল প্যাটার্ন ম্যাচার

 private static boolean isValidEmail(String email) {
        return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
    }

19

ইমেল বৈধতার জন্য সাধারণ একটি লাইন কোড ব্যবহার করুন

public static boolean isValidEmail(CharSequence target) {
    return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

মত ব্যবহার করুন ...

if (!isValidEmail(yourEdittext.getText().toString()) {
    Toast.makeText(context, "your email is not valid", 2000).show();
}

15

এটি অ্যান্ড্রয়েড স্টুডিও পরামর্শ:

public static boolean isEmailValid(String email) {
    return !(email == null || TextUtils.isEmpty(email)) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

1
নাল চেক email == nullTextUtils চেক এটা ভিতরে যেমন redandunt হয়
Volodymyr

@ ভোলডিমিয়ারখোডনোভিচ আপনি ঠিক বলেছেন, তবে নাল চেকটি একটি ওআর অবস্থায় সম্পন্ন করা হয়েছে, এটি না করা ম্যাচারার () পদ্ধতিতে ইমেল পাস করার সময় এনপিইতে নিয়ে যেতে পারে।
মাত্তিও

11

আপনি এটি করতে নিয়মিত প্রকাশ করতে পারেন। নীচের মত কিছু।

Pattern pattern = Pattern.compile(".+@.+\\.[a-z]+");

String email = "xyz@xyzdomain.com";

Matcher matcher = pattern.matcher(email);

boolean matchFound = matcher.matches();

দ্রষ্টব্য: উপরে বর্ণিত নিয়মিত অভিব্যক্তিটি পরীক্ষা করে দেখুন, এটি যেমন হয় তেমন ব্যবহার করবেন না।


3
এর ফলে, নিম্নলিখিত বৈধ ইমেইল ঠিকানা ব্যর্থ হলে: "Example Guy" <guy@example.com>। আপনি যখন প্রযুক্তিগতভাবে কোনও রেগেক্সের সাথে ইমেলটি বৈধ করতে পারেন তবে এটি করা কিছুটা অযৌক্তিক।
কোরি পেটোস্কি

1
যদিও এটি কেবল একটি ইমেল ঠিকানা নয়।
ব্রিল প্যাপিন

11

অ্যান্ড্রয়েড ব্যবহার করুন: ইনপুটটাইপ = "টেক্সটমেইলএড্রেস" নীচের মত:

       <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="email"
        android:inputType="textEmailAddress"
        android:id="@+id/email"
        />

এবং:

       boolean isEmailValid(CharSequence email) {
        return android.util.Patterns.EMAIL_ADDRESS.matcher(email)
                .matches();
      }

11

আপনি কোটলিন এক্সটেনশনটি এভাবে লিখতে পারেন:

fun String.isValidEmail() =
        this.isNotEmpty() && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()

এবং তারপরে এটিকে কল করুন:

email.isValidEmail()

"প্যাটার্নস" কে?
জেমশিত ইস্কেন্দ্রভ


9

Patternsপ্যাকেজের একটি ক্লাস রয়েছে android.utilযা এখানে উপকারী। নীচে আমি সর্বদা ইমেল এবং অন্যান্য অনেকগুলি স্টাফ্ট যাচাইয়ের জন্য ব্যবহার করি

private boolean isEmailValid(String email) {
    return !TextUtils.isEmpty(email) && Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

5

আপনি ইমেল আইডি যাচাই করতে চান যেখানে এই পদ্ধতিতে কল করুন।

public static boolean isValid(String email)
{
   String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
   CharSequence inputStr = email;
   Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
   Matcher matcher = pattern.matcher(inputStr);
   if (matcher.matches()) 
   {
      return true;
   }
   else{
   return false;
   }
}

5

কোনও ইমেল বৈধতার জন্য অ্যান্ড্রয়েড কিছু ইনবিল্ট প্যাটার্ন সরবরাহ করে ut তবে এটি কেবলমাত্র API স্তর 8 এবং তারপরে সমর্থন করে ।

ইমেল বৈধতা যাচাই করতে সেই প্যাটার্নটি ব্যবহারের জন্য এখানে কোড।

  private boolean Email_Validate(String email) 
  {
    return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
  }

নিশ্চিত হয়ে নিন যে এই পদ্ধতিটি কার্যকর করার পরে আপনার এটি পরীক্ষা করা উচিত যে যদি এই পদ্ধতিটি সত্য হয়ে যায় তবে আপনি ইমেল সংরক্ষণের অনুমতি দিচ্ছেন এবং যদি এই পদ্ধতিটি মিথ্যা প্রত্যাবর্তন করে তবে ইমেলটি "অবৈধ" রয়েছে তা প্রদর্শন করুন।

আশা করি আপনি উত্তর পেয়েছেন, ধন্যবাদ।


4

আমি কী আপনাকে দৃ recommend়ভাবে সুপারিশ করতে পারি আপনি ইমেল ঠিকানাগুলিকে 'বৈধতা দেওয়ার' চেষ্টা করবেন না, আপনি কোনও অকারণে নিজেকে অজস্র কাজে লাগিয়ে দেবেন।

কেবল নিশ্চিত হয়ে নিন যে যা প্রবেশ করেছে তা আপনার নিজের কোডটি ভাঙবে না - যেমন কোনও স্পেস বা অবৈধ অক্ষর যা কোনও ব্যতিক্রম ঘটতে পারে।

অন্য যে কোনও কিছুই আপনাকে ন্যূনতম রিটার্নের জন্য প্রচুর পরিশ্রমের কারণ ঘটাবে ...


3
সাবস্ক্রিপশন এবং অর্থ প্রদানের সাথে কাজ করার সময় এটি কার্যকরভাবে কার্যকর পরামর্শ। যদি কেউ তাদের পাসওয়ার্ড ভুলে যায় তবে আমাদের অবশ্যই তাদের পাসওয়ার্ডটি পরিষেবাটি চালিয়ে যাওয়ার অনুমতি দেওয়ার জন্য তাদের পাসওয়ার্ডটি নিরাপদে পুনরায় সেট করার একটি উপায় থাকতে হবে have তাই কখনও কখনও এটি সর্বোত্তম যে আমরা নিশ্চিত করে নিই যে তারা নিজের স্বার্থে একটি বৈধ ইমেল ঠিকানা প্রবেশ করছে।
ডিন ওয়াইল্ড

1
আমি যা বলেছিলাম তা সম্পর্কে স্পষ্ট করে বলার জন্য - যদি কেউ নকল / ভুল ঠিকানা প্রবেশের উদ্দেশ্যে থাকে - তবে কোনও পরিমাণ বৈধতা তাদের আটকাবে না s ফাঁকা জায়গাগুলির মতো নির্বোধ ভুলের জন্য চেক করা এবং '@' ইত্যাদি ঠিক আছে - অন্য যে কোনও কিছু যাচাই করা হয় 'কমছে রিটার্নে' ভাল ...

3
ভুয়া ইমেল শনাক্ত করার একমাত্র উপায় হল সেই ইমেল
আইডিতে

জন, অনেক ব্যবহারকারী হবে না অভিপ্রায় একটি জাল / ভুল ঠিকানা লিখে, কিন্তু দুর্ঘটনা দ্বারা ভুল তা লিখতে পারেন। সুতরাং একটি সাধারণ চেক করা খুব দরকারী হতে পারে এবং যেমন মানসিকতার উত্তরে দেখানো হয় যে খুব বেশি কাজ হয় না। আমার অভিজ্ঞতা থেকে, বেশিরভাগ লোকেরা তাদের ইমেল ঠিকানাগুলি সঠিকভাবে প্রবেশ করে এবং কয়েকটি অকার্যকর ইমেল প্রায়শই নিরীহ টাইপকের হয়ে পড়ে বলে মনে হয়।
-15

যদি এটি গুরুত্বপূর্ণ হয় যে ব্যবহারকারীর ইমেলটি কাজ করে তবে আপনি একটি নিশ্চিতকরণ ইমেল প্রেরণ করুন। বাকী সবই বাজে কথা।
অবিশ্বাস্য জানুয়ারী

4

আপনার ইমেল ঠিকানা ফর্ম্যাটটি বৈধ করুন। Ex-virag@gmail.com

public boolean emailValidator(String email) 
{
    Pattern pattern;
    Matcher matcher;
    final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
    pattern = Pattern.compile(EMAIL_PATTERN);
    matcher = pattern.matcher(email);
    return matcher.matches();
}

3
    public boolean isValidEmail(String email)
{
    boolean isValidEmail = false;

    String emailExpression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    CharSequence inputStr = email;

    Pattern pattern = Pattern.compile(emailExpression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);
    if (matcher.matches())
    {
        isValidEmail = true;
    }
    return isValidEmail;
}

2

আপনি যদি 8 বা ততোধিক এপিআই ব্যবহার করে থাকেন তবে Patternsইমেল যাচাই করতে আপনি সহজেই উপলব্ধ ক্লাসটি ব্যবহার করতে পারেন । কোডের উদাহরণ:

public final static boolean isValidEmail(CharSequence target) {
    if (target == null) 
        return false;

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

সুযোগক্রমে আপনি যদি 8 টিরও কম এপিআই স্তরকে সমর্থন করে থাকেন তবে আপনি কেবল Patterns.javaআপনার প্রকল্পে ফাইলটি অনুলিপি করতে পারেন এবং এটি উল্লেখ করতে পারেন। আপনি এই লিঙ্কPatterns.java থেকে উত্স কোড পেতে পারেন


2

এখানে android.util.Patterns.EMAIL_ADDRESS

[ZA-Z0-9 + + ._ \% - + +] {1,256} \ @ [ZA-Z0-9] [ZA-Z0-9 -]। {0,64} ([A- zA-Z0-9] [zA-Z0-9 -] {0,25}) + +

String এটি মিলবে যদি

Start by 1->256 character in (a-z, A-Z, 0-9, +, ., _, %, - , +)  
then 1 '@' character  
then 1 character in (a-z, A-Z, 0-9)  
then 0->64 character in (a-z, A-Z, 0-9, -)  
then **ONE OR MORE** 
         1 '.' character   
    then 1 character in (a-z, A-Z, 0-9)   
    then 0->25 character in (a-z, A-Z, 0-9, -)

কিছু বিশেষ ম্যাচের ইমেল উদাহরণ

a@b.c
a+@b-.c
a@b.c.d.e.f.g.h

আপনি আপনার মামলার জন্য এই প্যাটার্নটি সংশোধন করতে পারেন তারপরে যাচাই করুন

fun isValidEmail(email: String): Boolean {
    return Patterns.EMAIL_ADDRESS.matcher(email).matches()
}

1

এই সহজ পদ্ধতিটি ব্যবহার করে দেখুন যা সংখ্যার সাথে শুরু করে ইমেল ঠিকানাটি গ্রহণ করতে পারে না:

boolean checkEmailCorrect(String Email) {
    if(signupEmail.length() == 0) {
        return false;
    }

    String pttn = "^\\D.+@.+\\.[a-z]+";
    Pattern p = Pattern.compile(pttn);
    Matcher m = p.matcher(Email);

    if(m.matches()) {
        return true;
    }

    return false;
}

1

এই কোডটি ব্যবহার করে দেখুন .. এটি সত্যিই কাজ করে ..

            if (!email
                    .matches("^[\\w-_\\.+]*[\\w-_\\.]\\@([\\w]+\\.)+[\\w]+[\\w]$"))
            {
                Toast.makeText(getApplicationContext(), "Email is invalid",
                        Toast.LENGTH_LONG).show();
                return;
            }

1

নিম্নলিখিতটি আমার দ্বারা ব্যবহৃত হয়েছিল। তবে এটিতে সাধারণ ইমেলগুলির চেয়ে অতিরিক্ত অক্ষর রয়েছে তবে এটি আমার জন্য প্রয়োজন।

public boolean isValidEmail(String inputString) {
    String  s ="^((?!.*?\.\.)[A-Za-z0-9\.\!\#\$\%\&\'*\+\-\/\=\?\^_`\{\|\}\~]+@[A-Za-z0-9]+[A-Za-z0-9\-\.]+\.[A-Za-z0-9\-\.]+[A-Za-z0-9]+)$";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(inputString);
    return matcher.matches();
}

এই প্রশ্নের উত্তর: - প্রদত্ত পয়েন্ট সহ একটি ইমেল ঠিকানা বৈধতা দেওয়ার প্রয়োজনীয়তা

ব্যাখ্যা.-

  1. (?!। *? ..) পরপর 2 টি বিন্দু উপেক্ষা করতে "নেতিবাচক চেহারা"।
  2. [A-Za-z0-9।! # \ $ \% \ & \ '* + - / \ = \? \ ^ _ `{\ |} \ ~] + কমপক্ষে একটি অক্ষর সংজ্ঞায়িত। ("\" পালানোর জন্য ব্যবহৃত হয়)।
  3. @ সেখানে একটি "@" থাকতে পারে।
  4. [A-Za-z0-9] + তারপরে কমপক্ষে একটি অক্ষর সংজ্ঞায়িত করা হবে।
  5. [A-Za-z0-9 -।] * শূন্য বা বর্ণের কোনও পুনরাবৃত্তি সংজ্ঞায়িত।
  6. [A-Za-z0-9] + বিন্দুর পরে কমপক্ষে একটি চর।

1

এখানে কীটি হ'ল আপনি ইমেল ঠিকানাটি পুরোপুরি বৈধ করতে চান। আপনি কেবল সিনট্যাকটিক নির্ভুলতার জন্য এটি পরীক্ষা করতে চান না, আপনি ইমেল ঠিকানাটি আসল কিনা তা পরীক্ষা করতে চান।

দুটি সুস্পষ্ট কারণ: প্রকৃত ব্যবহারকারীরা প্রায়শই তাদের ইমেল ঠিকানাগুলি ভুল টাইপ করেন এবং কিছু ব্যবহারকারী জাল ইমেল ঠিকানা রাখতে পারেন। অতএব, আপনি একটি সিনট্যাকটিক চেক এবং একটি অস্তিত্ব চেক করতে চান।

অ্যান্ড্রয়েডে আমি যা পেয়েছি তার সর্বোত্তম উপায় হ'ল এটির জন্য ফ্রি ক্লাউডমার্সিভ বৈধকরণ API ব্যবহার করা।

কোডটি এর মতো দেখাচ্ছে:

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");

EmailApi apiInstance = new EmailApi();
String email = "email_example"; // String | Email address to validate, e.g. \"support@cloudmersive.com\". The input is a string so be sure to enclose it in double-quotes.
try {
    FullEmailValidationResponse result = apiInstance.emailFullValidation(email);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EmailApi#emailFullValidation");
    e.printStackTrace();
}

আমি এটি আমার সমস্ত অ্যাপ্লিকেশনগুলিতে ব্যবহার করছি এবং এটি দুর্দান্ত কারণ আমি প্রবেশের সময়ে ইউএক্সের ইমেল ঠিকানাগুলি যাচাই করতে পারি ।


1

এক্সটেনশন ফাংশনগুলি ব্যবহার করে সবচেয়ে সহজ কোটলিন সমাধান:

fun String.isEmailValid() =
            Pattern.compile(
                    "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
                            "\\@" +
                            "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
                            "(" +
                            "\\." +
                            "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
                            ")+"
            ).matcher(this).matches()

এবং তারপরে আপনি এটি যাচাই করতে পারেন:

"testemail6589@gmail.com".isEmailValid()

0

নোট করুন যে বেশিরভাগ নিয়মিত এক্সপ্রেশনটি আন্তর্জাতিক ডোমেন নাম (আইডিএন) এবং .mobi বা .info এর মতো নতুন শীর্ষ স্তরের ডোমেনগুলির জন্য বৈধ নয় (যদি আপনি দেশের কোড বা .org, .com, .gov এবং এর জন্য পরীক্ষা করেন)।

একটি বৈধ চেক স্থানীয় অংশ (স্বাক্ষরের আগে) এবং ডোমেন অংশ পৃথক করা উচিত। আপনার স্থানীয় অংশ এবং ডোমেনের সর্বাধিক দৈর্ঘ্যও বিবেচনা করা উচিত (সংকেত সহ 255 অক্ষর যোগফল)

সর্বোত্তম পন্থা হ'ল ঠিকানাটি আইডিএন সামঞ্জস্যপূর্ণ বিন্যাসে রূপান্তর করা (যদি প্রয়োজন হয়), স্থানীয় অংশটি (আরএফসি) যাচাই করুন, ঠিকানার দৈর্ঘ্য এবং ডোমেনের উপলব্ধতা (ডিএনএস এমএক্স লুকআপ) পরীক্ষা করুন বা কেবল ইমেল প্রেরণ করুন ।


0

লিঙ্কাইফাই ক্লাসে বেশ কয়েকটি দরকারী সহায়ক সহায়ক পদ্ধতি রয়েছে যা প্রাসঙ্গিক হতে পারে, ফোন নম্বর এবং ইমেল ঠিকানা বাছাইয়ের জন্য ডিজাইন করা নিয়মিত অভিব্যক্তি সহ:

http://developer.android.com/reference/android/text/util/Linkify.html


0

আমি ফোলউইং কোড ব্যবহার করেছি T এটি গ্রেট কাজ করে I আমি আশা করি এটি আপনাকে সহায়তা করবে।

if (validMail(yourEmailString)){
   //do your stuf
 }else{
 //email is not valid.
}

এবং ফোলউইং পদ্ধতি ব্যবহার করুন email

    private boolean validMail(String yourEmailString) {
    Pattern emailPattern = Pattern.compile(".+@.+\\.[a-z]+");
    Matcher emailMatcher = emailPattern.matcher(emailstring);
    return emailMatcher.matches();
}

0

ইমেল আপনার ইমেল হয়।

public boolean validateEmail(String email) {

    Pattern pattern;
    Matcher matcher;
    String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
    pattern = Pattern.compile(EMAIL_PATTERN);
    matcher = pattern.matcher(email);
    return matcher.matches();

    }

0

রিজেক্স প্রেমীদের জন্য, সবচেয়ে ভাল (যেমন আরএফসি 822 এর সাথে সংহত) ইমেল প্যাটার্নটি আমি এখন থেকে খুঁজে পেয়েছি নিম্নলিখিতটি (পিএইচপি সরবরাহকারী ফিল্টারগুলির আগে)। আমি অনুমান করি যে এটি জাভাতে অনুবাদ করা সহজ - যারা এইপিআই <8 এর সাথে খেলছেন তাদের জন্য

private static function email_regex_pattern() {
// Source:  http://www.iamcal.com/publish/articles/php/parsing_email
$qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
$dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
$atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c'.
    '\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
$quoted_pair = '\\x5c[\\x00-\\x7f]';
$domain_literal = "\\x5b($dtext|$quoted_pair)*\\x5d";
$quoted_string = "\\x22($qtext|$quoted_pair)*\\x22";
$domain_ref = $atom;
$sub_domain = "($domain_ref|$domain_literal)";
$word = "($atom|$quoted_string)";
$domain = "$sub_domain(\\x2e$sub_domain)*";
$local_part = "$word(\\x2e$word)*";
$pattern = "!^$local_part\\x40$domain$!";
return $pattern ;
}

0

আপনি খুব সহজেই ওভাল.জার ফাইল দ্বারা অ্যান্ড্রয়েডে যে কোনও ধরণের বৈধতা করতে পারেন। ওভাল হ'ল যেকোন প্রকার জাভা অবজেক্টের জন্য ব্যবহারিক এবং এক্সটেনসিবল সাধারণ উদ্দেশ্য বৈধকরণ কাঠামো।

এই লিঙ্কটি অনুসরণ করুন: http://oval.sourceforge.net/userguide.html

আপনি এখান থেকে এটি ডাউনলড করতে পারেন: http://oval.sourceforge.net/userguide.html#download

আপনি ভেরিয়েবলগুলিতে ট্যাগ সেট করে বৈধতা ব্যবহার করতে পারেন

public class Something{

    @NotEmpty  //not empty validation
    @Email     //email validation
    @SerializedName("emailAddress")
    private String emailAddress;
}

   private void checkValidation() {
        Something forgotpass.setEmailAddress(LoginActivity.this.dialog_email.getText().toString());
        Validator validator = new Validator();
        //collect the constraint violations
        List<ConstraintViolation> violations = validator.validate(forgotpass);
        if(violations.size()>0){
            for (ConstraintViolation cv : violations){
                if(cv.getMessage().contains("emailAddress")){
                    dialog_email.setError(ValidationMessage.formattedError(cv.getMessage(), forgotpass));
                }
            }
        }
}

0

আপনি ব্যবহার করতে পারে

InternetAddress emailAddr = new InternetAddress(email);
emailAddr.validate();

ইমেলটি বৈধ না হলে এটি একটি ঠিকানাপ্রকাশ নিক্ষেপ করবে ।

দুর্ভাগ্যক্রমে অ্যান্ড্রয়েড jndi-dns সমর্থন করে না , তবে কেবল আপনাকে আরও শক্তিশালী ইমেল বৈধতার ধারণা দেওয়ার জন্য, আপনি এটি ইমেল ডোমেনকে বৈধতা দেওয়ার জন্য ব্যবহার করতে পারেন। যদি কোনও অ্যান্ড্রয়েড গুরু একই রকম বিকল্প থাকে তবে সাহায্য করতে এবং দেখাতে পারে ... "নিয়মিত" জাভা সহ একটি উদাহরণ প্রয়োগ এখানে পাওয়া যায়

সম্পাদনা

আমি শুধু বুঝতে পারেন যে javax.mail তন্ন তন্ন সমর্থন করে না ... কিন্তু এই পোস্টে শো একটি কার্যসংক্রান্ত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.