জাভা রেইগেক্স ইমেল


120

প্রথমত, আমি জানি যে ইমেলের জন্য রেজেক্স ব্যবহার করার পরামর্শ দেওয়া হয় না তবে আমি এটি পরীক্ষা করে দেখতে পারি।

আমার এই রেজেক্স আছে:

\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b

জাভাতে, আমি এটি করেছি:

Pattern p = Pattern.compile("\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b");
Matcher m = p.matcher("foobar@gmail.com");

if (m.find())
    System.out.println("Correct!");

যাইহোক, ইমেলটি স্বাগত বা না তা নির্বিশেষে রেজেক্স ব্যর্থ হয়। Eclipse এর ভিতরে একটি "সন্ধান করুন এবং প্রতিস্থাপন করুন" একই রেজেক্সের সাথে সূক্ষ্মভাবে কাজ করে।

কোন ধারণা?

ধন্যবাদ,


3
আপনার regexp এর সাথে একটি সমস্যা হ'ল কেস-সংবেদনশীলতা। আপনার প্যাটার্নের জন্য আপনার প্যাটার্ম ডট কম ফাইল ("...", প্যাটার্ন.সিএএসএনআইএনএসএনএসটিআইভি) ব্যবহার করা উচিত।
জেসন বুবলেল

1
জাভাতে ইমেল বৈধতার জন্য রিজেক্স ব্যবহার করার জন্য টিআইকে কেন সুপারিশ করা হয় না?
ফিলিপ মিরান্ডা

ইমেলরেজএক্স.কম এই সাইট থেকে প্রদত্ত রেজেক্স ব্যবহার করে। এটি 99.99% সঠিক ইমেল রিজেক্স রয়েছে বলে দাবি করেছে
মেনুকা ইশান

উত্তর:


246

এফডাব্লুআইডাব্লু, ইমেল ঠিকানাগুলি যাচাই করার জন্য আমরা এখানে জাভা কোডটি ব্যবহার করি। রেজিপ্সের সাথে খুব মিল রয়েছে:

public static final Pattern VALID_EMAIL_ADDRESS_REGEX = 
    Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);

public static boolean validate(String emailStr) {
        Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(emailStr);
        return matcher.find();
}

মোটামুটি নির্ভরযোগ্যভাবে কাজ করে।


5
মাত্র দুই counterexamples। Webmaster@müller.de (বৈধ ও আপনার উদাহরণ দ্বারা প্রত্যাখ্যাত), matteo@78.47.122.114 (আমার ইমেল, বৈধ এবং আপনার উদাহরণ দ্বারা প্রত্যাখ্যাত
Matteo

10
এই রেজেক্স অসম্পূর্ণ। কোনও আরএফসি 822 অনুবর্তী বৈধতার জন্য আমার উত্তর দেখুন ।
ইজবয়

15
ইমেল ঠিকানার 99.9% এর সাথে মেলে এমন একটি সহজ সমাধানের জন্য এটি একটি ভাল সমাধান।
ম্যালুনি

এই চেক করুন Regex এটা @Matteo আপনার ইমেল উভয় মিলে যায়
T04435

@ T04435 আপনার লিঙ্কে থাকা রেজেক্সটি ডট থেকে রক্ষা পাবে না। কী
রেজেক্সকে কার্যত

173

এখানে জাভাটির জন্য অভিযোজিত আরএফসি 822 এর সাথে সামঞ্জস্যপূর্ণ রেজেক্স রয়েছে:

Pattern ptr = Pattern.compile("(?:(?:\\r\\n)?[ \\t])*(?:(?:(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*|(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*\\<(?:(?:\\r\\n)?[ \\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*)*:(?:(?:\\r\\n)?[ \\t])*)?(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*\\>(?:(?:\\r\\n)?[ \\t])*)|(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*:(?:(?:\\r\\n)?[ \\t])*(?:(?:(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*|(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*\\<(?:(?:\\r\\n)?[ \\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*)*:(?:(?:\\r\\n)?[ \\t])*)?(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*\\>(?:(?:\\r\\n)?[ \\t])*)(?:,\\s*(?:(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*|(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)*\\<(?:(?:\\r\\n)?[ \\t])*(?:@(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*)*:(?:(?:\\r\\n)?[ \\t])*)?(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*\\>(?:(?:\\r\\n)?[ \\t])*))*)?;\\s*)");
String[] emails = { "\"Fred Bloggs\"@example.com", "user@.invalid.com", "Chuck Norris <gmail@chucknorris.com>", "webmaster@müller.de", "matteo@78.47.122.114" };
for (String email : emails) {
    System.out.println(email + " is " + (ptr.matcher(email).matches() ? "valid" : "invalid"));
}

আউটপুট:

"Fred Bloggs"@example.com is valid
user@.invalid.com is invalid
Chuck Norris <gmail@chucknorris.com> is valid
webmaster@müller.de is valid
matteo@78.47.122.114 is valid

রেজেক্সটি এই পোস্ট থেকে নেওয়া হয়েছে: মেল :: আরএফসি 822 :: ঠিকানা: রিজেক্সপ-ভিত্তিক ঠিকানা বৈধতা । ফলাফলগুলি অনলাইন সংস্করণের সাথে মিলে যায় ।


2
আমি মনে করি তিনি এটিকে ডাউনগ্রেড করেছেন কারণ "সংকলনের আগে একটির মতো বিশেষ চরিত্রগুলিকে ম্যানুয়ালি পলায়ন করতে হবে
synt

1
ধন্যবাদ ইসুরু! আমার মনে আছে কয়েক বছর আগে আমি আমার একটি প্রকল্পে এই রেজেক্সটি ব্যবহার করেছিলাম, তবে আমি ভুলে গিয়েছিলাম যে এটি চ্যাপ্টা এবং সঠিকভাবে এড়াতে এটির জন্য কিছুটা পোলিশ করা দরকার। প্রকৃতপক্ষে ডাবল উদ্ধৃতিতে পেস্ট করা একটি অভিব্যক্তি স্বয়ংক্রিয়ভাবে পলায়নের জন্য ইন্টেলিজ একটি দুর্দান্ত কাজ করে।
ইজবয়

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

5
এটি email@emailবৈধ ইমেল হিসাবে বৈধতা দেয়
lxknvlk

2
"ম্যাট রেডার" @ জিমেইল ডট কমকে বৈধ হিসাবে চিহ্নিত করুন, যা আমি সঠিক হলে আরএফসি 822- অনুগত নয়
আসকার কল্যাভক

15

না। আপনি কোনও বৈধ এক্সপ্রেশন দিয়ে শেষ করবেন না।

উদাহরণস্বরূপ এগুলি সমস্ত বৈধ ইমেল ঠিকানা:

"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/department=shipping@examp­ le.com
$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com
matteo(this is a comment).corti@example.com
root@[127.0.0.1]

কয়েকটি সমস্যা উল্লেখ করার জন্য:

  • আপনি হোস্ট নির্দিষ্ট করার বিভিন্ন ফর্ম বিবেচনা করবেন না (যেমন, আইপি ঠিকানার মাধ্যমে)
  • আপনি বৈধ অক্ষর মিস করেন
  • আপনি ASCII নন ডোমেন নামগুলি মিস করেছেন

এমনকি সম্পর্কিত আরএফসিগুলি পরীক্ষা করার আগেও পরীক্ষা করুন


2
স্পেস সহ ইমেলগুলি? এটি কোথাও কোথাও ঠিক করা হয়েছিল যে ই-মেইলে ফাঁকা স্থান থাকতে পারে তা এমনকি বেশ অবৈধ বলে মনে হয়।
বার্গা

emailregex.com এই সাইটের ইমেলগুলির জন্য 99% শতাংশ সঠিক রেগেক্স রয়েছে বলে দাবি করা হয়েছে
মেনুকা ইশান

1
@ মেনুকাআইশন তারা নিজেদের দাবি হিসাবে রেগেেক্স কখনই পুরোপুরি ঠিক হবে না। আপনি উপরের কয়েকটি উদাহরণ পরীক্ষা করতে পারেন। এখন প্রশ্ন হল কেন সেখানে কাজ করছেন যেখানে বাস্তবায়ন রয়েছে সেখানে কাজ করছেন?
মাত্তেও

1
@ মাত্তিও আপনি কি আমাকে এমন উদাহরণ দিতে পারেন যা রেজেক্সের প্রয়োজন হয় না? হাইবারনেট ভ্যালিডেটর @ ইমেল টিকা সম্পর্কে আমি জানি। আপনি কি সেই ধরণের কথা বলছেন? যাইহোক আমি আপনার উদাহরণগুলি জানতে পছন্দ করব যাতে আমি সেগুলি আমার ভবিষ্যতের উন্নয়নগুলিতে ব্যবহার করতে সক্ষম হব। ধন্যবাদ.
মেনুকা ইশান

কোন ভাষা ব্যবহার করছে?
মাত্তেও

7

এর কারণ আপনি কেস সংবেদনশীলতা ভুলে যাচ্ছেন:

Pattern regex = Pattern.compile("\\b[\\w.%-]+@[-.\\w]+\\.[A-Za-z]{2,4}\\b");

এটি আপনার উদাহরণের সাথে মেলে যদিও এটি অনেকগুলি বৈধ ইমেলগুলি উপেক্ষা করে।


5

99% ইমেলকে বৈধতা দেওয়ার জন্য অন্য একটি সহজ বিকল্প

public static final String EMAIL_VERIFICATION = "^([\\w-\\.]+){1,64}@([\\w&&[^_]]+){2,255}.[a-z]{2,}$";

1
আমি এটি পছন্দ করি কারণ এটি সহজ এবং বোধগম্য, এটির একটি জিনিস অনুপস্থিত যা হ'ল আন্তর্জাতিক ভাষা সমর্থন (föö@bar.com আজকাল বৈধ) কেবলমাত্র \ পি {এল for এর জন্য \ ডাব্লু পরিবর্তন করে যে কোনও ভাষার অক্ষরকে অনুমতি দেয়। আমি এখানে দিয়ে শেষ করেছি: "^ ([\ p {L} -_ \।] +) {1,64} @ ([[\ পি {এল} -_ \।]] +) {2,255}। [আজ] {2 ,} $ "
টবি নামবিহীন

3

এটি ইমেলগুলি বৈধ করার জন্য একটি বৈধ রেইগেক্স। এটি সম্পূর্ণরূপে আরএফসি 822 এর সাথে সম্মতিযুক্ত এবং আইপি ঠিকানা এবং সার্ভারের নামগুলি (ইন্ট্রানেটের উদ্দেশ্যে) গ্রহণ করে।

public static boolean isEmailValid(String email) {
    final Pattern EMAIL_REGEX = Pattern.compile("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", Pattern.CASE_INSENSITIVE);
    return EMAIL_REGEX.matcher(email).matches();
}

আপনি যখন কল করবেন তখন এখানে কিছু আউটপুট উদাহরণ রয়েছে isEmailValid(emailVariable):

john@somewhere.com // valid
john.foo@somewhere.com // valid
john.foo+label@somewhere.com // valid (with +label - Gmail accepts it!)
john@192.168.1.10 // valid (with IP addresses)
john+label@192.168.1.10 // valid (with +label and IP address)
john.foo@someserver // valid (with no first domain level)
JOHN.FOO@somewhere.com // valid (case insensitive)
@someserver // invalid
@someserver.com // invalid
john@. // invalid
.@somewhere.com // invalid


1

জাভাতে ইমেল ঠিকানা যাচাই করার জন্য আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন।

public class EmailValidator {
    private Pattern pattern;
    private Matcher matcher;

    private static final String EMAIL_PATTERN = 
        "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
        + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

    public EmailValidator() {
        pattern = Pattern.compile(EMAIL_PATTERN);
    }

    /**
    * Validate hex with regular expression
    * 
    * @param hex
    *            hex for validation
    * @return true valid hex, false invalid hex
    */
    public boolean validate(final String hex) {

    matcher = pattern.matcher(hex);
    return matcher.matches();

    }
}

1

সাধারণ ইমেল ফর্ম্যাট (আরই) যা ডোমেইন যেমন co.in, co.uk, com, আউটলুক ডট কম ইত্যাদি অন্তর্ভুক্ত করে include

এবং বিধি বলে যে:

  • বড় হাতের এবং ছোট হাতের অক্ষরের ইংরেজি অক্ষর (এজেড, এজেড)
  • সংখ্যা 0 থেকে 9
  • চরিত্র ! # $% & '* + - / =? ^ _ `{| । ~ চরিত্র।
  • (ডট, পিরিয়ড, ফুল স্টপ) শর্ত দেয় যে এটি প্রথম বা শেষ চরিত্র নয়, এবং এটি সরবরাহ করা হয়েছে যে এটি পর পর দু'বার বা তার বেশি বার প্রদর্শিত না হয়।

    [a-zA-Z0-9]+[._a-zA-Z0-9!#$%&'*+-/=?^_`{|}~]*[a-zA-Z]*@[a-zA-Z0-9]{2,8}.[a-zA-Z.]{2,6}

1

আর্মার বি। এর উত্তর পরিবর্তন যা '.co.uk' দিয়ে শেষ হওয়া ইমেলগুলিকে বৈধতা দেয় না

public static boolean emailValidate(String email) {
    Matcher matcher = Pattern.compile("^([\\w-\\.]+){1,64}@([\\w&&[^_]]+){2,255}(.[a-z]{2,3})+$|^$", Pattern.CASE_INSENSITIVE).matcher(email);

    return matcher.find();
}

0

রেজেক্স: ^[\\w!#$%&’*+/=?{|} ~ ^ -] + (?: \। [\ ডাব্লু! # $% & '* + / =?{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$

public static boolean isValidEmailId(String email) {
        String emailPattern = "^[\\w!#$%&’*+/=?`{|}~^-]+(?:\\.[\\w!#$%&’*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";
        Pattern p = Pattern.compile(emailPattern);
        Matcher m = p.matcher(email);
        return m.matches();
    }

0

আপনি যদি নন-ল্যাটেন অক্ষরগুলিকে অনুমতি দিতে চান তবে এটি আমার পক্ষে বেশ ভাল কাজ করে।

"^[\\p{L}\\p{N}\\._%+-]+@[\\p{L}\\p{N}\\.\\-]+\\.[\\p{L}]{2,}$"

এটি @ এর পরে আইপির অনুমতি দেয় না তবে এর মধ্যে সবচেয়ে বৈধ ইমেল এটি দিয়ে বৈধ xxx@xxx.TDLহতে পারে। \p{L}ইউটিএফ-পত্রগুলি \p{N}বৈধ করে এবং ইউটিএফ-নম্বরগুলিকে বৈধতা দেয়। আপনি আরও তথ্যের জন্য এই দস্তাবেজটি পরীক্ষা করতে পারেন ।


0

ইমেলের জন্য নীচের কোডটি বিন্যাসের চেষ্টা করুন

jsmith@example.com

প্রথম অংশ -jsmith 2 য় অংশ-@example.com

1. In the 1 part it will allow 0-9,A-Z,dot sign(.),underscore sign(_)
 2. In the 2 part it will allow A-Z, must be @ and .

^[a-zA-Z0-9_.]+@[a-zA-Z.]+?\.[a-zA-Z]{2,3}$

0

আমি এটি নীচে regular expressionএকা এবং একাধিক টানা বিন্দুর জন্য পরীক্ষা করেছি domain-

([A-Za-z0-9-_.]+@[A-Za-z0-9-_]+(?:\.[A-Za-z0-9]+)+)

এবং এখানে উদাহরণ যা সম্পূর্ণরূপে উপরে দ্বারা পরিপূর্ণ হয়েছিল হয় regex

End_user@live.com
End.u@exm-tech.net
enduser9876@gmail.in
end_user@mywebsite.ac.in.gui
Another984.User2@mail.edu.sg
Another987_User5@mail.show.au
Slow_User@example_domain.au.in
iamthemostsimpleremailhere@example.com

আমি উপরোক্ত চিত্রের দ্বারা সর্বাধিক ব্যবহৃত সর্বোচ্চটি কভার করার চেষ্টা করেছিemail id's validationregex এবং এখনও কাজ ...

আপনি যদি এখনও জানতে পারেন email id'sযে এখানে কিছু ফলস্বরূপ ব্যবহার করা হয়েছে তবে দয়া করে আমাকে মন্তব্য বিভাগে জানান!


0
String emailRegex = "[a-zA-Z0-9_.]+@[a-zA-Z0-9]+.[a-zA-Z]{2,3}[.] {0,1}[a-zA-Z]+";
Pattern.matches(emailRegex,"You_Input_Mail_Id");

এটি বৈধ ইমেল ঠিকানাগুলির সাথে মেলে রেইজেক্স।


ভবিষ্যতের পাঠকদের এর অর্থ আরও ভালভাবে বুঝতে সহায়তা করতে আপনার কোডটিতে কিছু ফর্ম্যাটিং এবং প্রসঙ্গ যুক্ত করার চেষ্টা করুন।
গ্রান্ট মিলার

0

ইমেল আইডি যাচাই করার জন্য আপনি একটি সাধারণ নিয়মিত অভিব্যক্তি ব্যবহার করতে পারেন,

public boolean validateEmail(String email){
  return Pattern.matches("[_a-zA-Z1-9]+(\\.[A-Za-z0-9]*)*@[A-Za-z0-9]+\\.[A-Za-z0-9]+(\\.[A-Za-z0-9]*)*", email)
}

বর্ণনা:

  1. [_a-zA-Z1-9] + - এটি সমস্ত এজেড, আজ, 0-9 এবং _ গ্রহণ করবে (+ এর অর্থ এটি অবশ্যই হওয়া উচিত)
  2. (\। [এ-জা-জেড -00 -9] ) - এটি যা গ্রহণ করবে। এবং এজেড, আজ, 0-9 (* এর অর্থ optionচ্ছিক)
  3. @ [এ-জা-জেড ০-৯] + - এটি @ এবং এজেড, এজে, ০-৯ গ্রহণ করবে
  4. \। [A-Za-z0-9] + - এর জন্য। এবং এজেড, আজ, 0-9
  5. (\। [এ-জা-জেড -00 -9] ) - এটি ঘটে,। তবে এটি alচ্ছিক

0

এই গ্রন্থাগারগুলি ব্যবহার করে ইমেলগুলি বৈধ আছে কি না তা আপনি পরীক্ষা করতে পারেন এবং অবশ্যই আপনি এই ফলোয়িং প্রকল্পের জন্য অ্যারে যুক্ত করতে পারেন।

import org.apache.commons.validator.routines.EmailValidator;

public class Email{
    public static void main(String[] args){
        EmailValidator email = EmailVlidator.getInstance();
        boolean val = email.isValid("george.parcks@gmail.com");
        System.out.println("Mail is: "+val);
        val = email.isValid("hans.riguer.hotmsil.com");
        System.out.print("Mail is: "+val");
    }
}

আউটপুট:

মেলটি হ'ল: সত্য

মেলটি হ'ল: মিথ্যা


চমৎকার যে এটি একটি লাইব্রেরি তবে ব্যবহার করা রেইগেক্স সত্যিই সহজ ... EMAIL_REGEX = "^ \\ s *? ((। +) @ (। +?) \\ s * $";
মিলো ভ্যান ডের জি

0
import java.util.Scanner;

public class CheckingTheEmailPassword {

    public static void main(String[] args) {
        String email = null;
        String password = null;
        Boolean password_valid = false;
        Boolean email_valid = false;

        Scanner input = new Scanner(System.in);
        do {
            System.out.println("Enter your email: ");
            email = input.nextLine();

            System.out.println("Enter your passsword: ");
            password = input.nextLine();

            // checks for words,numbers before @symbol and between "@" and ".".
            // Checks only 2 or 3 alphabets after "."
            if (email.matches("[\\w]+@[\\w]+\\.[a-zA-Z]{2,3}"))
                email_valid = true;
            else
                email_valid = false;

            // checks for NOT words,numbers,underscore and whitespace.
            // checks if special characters present
            if ((password.matches(".*[^\\w\\s].*")) &&
            // checks alphabets present
                    (password.matches(".*[a-zA-Z].*")) &&
                    // checks numbers present
                    (password.matches(".*[0-9].*")) &&
                    // checks length
                    (password.length() >= 8))
                password_valid = true;
            else
                password_valid = false;

            if (password_valid && email_valid)
                System.out.println(" Welcome User!!");
            else {
                if (!email_valid)
                    System.out.println(" Re-enter your email: ");
                if (!password_valid)
                    System.out.println(" Re-enter your password: ");
            }

        } while (!email_valid || !password_valid);

        input.close();

    }

}

0

@ জেসন বুবলেলের উত্তরের জন্য ধন্যবাদ, আমি মনে করি ছোট হাতের অক্ষরগুলি অবশ্যই রেজিএক্স দ্বারা বৈধ করা উচিত। সুতরাং নিম্নলিখিতটি সঠিক:

[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}

এখন, ডেভেলপার 961@mail.com এবং DEV961@yahoo.COM উভয়ই বৈধ!
নোট করুন যে \। হওয়া উচিত \\। পালাতে এবং আছে \। নিজেই। যেহেতু ,। জাভা রেগেক্সের একটি অর্থপূর্ণ চরিত্র যার অর্থ সমস্ত অক্ষর।


জেসনের উত্তরটি ব্যবহার করে Pattern.CASE_INSENSITIVE, সুতরাং এর জন্য কোনও প্রয়োজন নেইa-z
টোটো

-1

ফেসবুকের মতো বৈধতার জন্য রেজেক্স

public static final String REGEX_EMAIL_VALIDATION = "^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-zA-Z]{2,})$";

ইউনিট পরীক্ষার জন্য ডিটিও (লম্বোক সহ):

@Data
@Accessors(chain = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserCreateDto {

    @NotNull
    @Pattern(regexp = REGEX_EMAIL_VALIDATION)
    @Size(min = 1, max = 254)
    String email;
}

ইউনিট পরীক্ষার সাথে বৈধ / অবৈধ ইমেলগুলি:

public class UserCreateValidationDtoTest {

private static final String[] VALID_EMAILS = new String[]{"email@yahoo.com", "email-100@yahoo.com",
        "Email.100@yahoo.com", "email111@email.com", "email-100@email.net",
        "email.100@email.com.au", "emAil@1.com", "email@gmail.com.com",
        "email+100@gmail.com", "emAil-100@yahoo-test.com", "email_100@yahoo-test.ABC.CoM"};
private static final String[] INVALID_EMAILS = new String[]{"あいうえお@example.com", "email@111",
        "email", "email@.com.my", "email123@gmail.", "email123@.com", "email123@.com.com",
        ".email@email.com", "email()*@gmAil.com", "eEmail()*@gmail.com", "email@%*.com", "email..2002@gmail.com",
        "email.@gmail.com", "email@email@gmail.com", "email@gmail.com."};
private Validator validator;

@Before
public void setUp() throws Exception {
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    validator = factory.getValidator();
}

@Test
public void emailValidationShouldBeValid() throws Exception {
    Arrays.stream(VALID_EMAILS)
            .forEach(email -> {
                        Set<ConstraintViolation<UserCreateDto>> violations = validateEmail(
                                new UserCreateDto().setEmail(email));
                        System.out.println("Email: " + email + ", violations: " + violations);
                        Assert.assertTrue(violations.isEmpty());
                    }
            );
}

@Test
public void emailValidationShouldBeNotValid() throws Exception {
    Arrays.stream(INVALID_EMAILS)
            .forEach(email -> {
                        Set<ConstraintViolation<UserCreateDto>> violations = validateEmail(
                                new UserCreateDto().setEmail(email));
                        System.out.println("Email: " + email + ", violations: " + violations);
                        Assert.assertTrue(!violations.isEmpty());
                    }
            );
}


private Set<ConstraintViolation<UserCreateDto>> validateEmail(UserCreateDto user) {
    String emailFieldName = "email";
    return validator.validateProperty(user, emailFieldName);
}

}

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