রেগেক্স ইমেল বৈধতা


215

আমি এটি ব্যবহার করি

@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"

ইমেইল যাচাই করতে regexp

([\w\.\-]+)- এটি প্রথম স্তরের ডোমেনের জন্য (অনেকগুলি অক্ষর এবং সংখ্যা, এছাড়াও পয়েন্ট এবং হাইফেন)

([\w\-]+)- এটি দ্বিতীয় স্তরের ডোমেনের জন্য

((\.(\w){2,3})+)- এবং এটি অন্যান্য স্তরের ডোমেনগুলির জন্য (3 থেকে অনন্ত পর্যন্ত) যার মধ্যে একটি বিন্দু এবং 2 বা 3 অন্তর্ভুক্ত রয়েছে লিটারেল

এই রেইজেক্সে কি সমস্যা আছে?

সম্পাদনা: এটি "কিছু@someth.ing" ইমেলের সাথে মেলে না


1
আরএফসি 5321 এবং 5322 - কিছুই দ্বারা নির্দিষ্ট হিসাবে আপনি বৈধ অক্ষরগুলি অন্তর্ভুক্ত করছেন না Other
ব্র্যাড ক্রিস্টি


আমার মনে হয় আপনার কী ভুল তা আমাদের বলতে হবে এবং তারপরে অন্যরা আপনাকে ভুল জিনিসটি ঠিক করতে সহায়তা করতে পারে।
উয়ে কেইম

10
আপনার একটি সমস্যা আছে -> আপনি মনে করেন 'রেইজেক্স' -> এখন আপনার 2 টি সমস্যা রয়েছে ;-)
জাকুব কনেককি

1
আপনার রেজেক্স সম্পর্কে কেবল একটি মন্তব্য। এই নতুন .amsterdam, .info এবং অন্যান্য ডোমেনগুলির সাথে রেজেেক্সটি হওয়া উচিত:@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,})+)$""
টন স্নোই

উত্তর:


372

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

কোনও ইমেল ঠিকানা যাচাই করতে নিয়মিত অভিব্যক্তি ব্যবহার করার পরিবর্তে, আপনি System.Net.Mail.MailAdress শ্রেণিটি ব্যবহার করতে পারেন। কোনও ইমেল ঠিকানা বৈধ কিনা তা নির্ধারণ করার জন্য, ইমেল ঠিকানাটি মেইল ​​অ্যাড্রেস.মেলএড্রেস (স্ট্রিং) শ্রেণীর কনস্ট্রাক্টরের কাছে পাস করুন।

public bool IsValid(string emailaddress)
{
    try
    {
        MailAddress m = new MailAddress(emailaddress);

        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}

এটি আপনাকে অনেকটা মাথা ব্যাথার হাত থেকে বাঁচায় কারণ আপনাকে লিখতে হবে না (বা অন্য কারও বোঝার চেষ্টা করতে হবে) রেজিএক্স।


63
এটি ".." ডাবল ডটগুলি ধরেনি nor আমি এর পরিবর্তে
রেজেক্সের

33
এটি সত্ত্বেও একটি জনপ্রিয় উত্তর। এটা ঠিক আছে, অন্তত দুই অবৈধ ফরম্যাটের ধরা ব্যর্থ হয়: "এবিসি @ example.com।", "Abc..123 @ example.com"
sean717

12
@ sean717: আরএফসি এবং / অথবা লিঙ্কটি দেখুন । আমি সম্মত হই যে আপনার উদাহরণগুলি সম্ভবত আসল বিশ্বে কাজ করবে না, তবে এটি তাদের অবৈধ করে না।
ড্যান পিচেলম্যান

13
এটি কাজ করছে কি না তা ইনপুটকে বৈধ করার চেষ্টা করে ব্যবহার করা বাঞ্ছনীয় নয়। রেগেক্স অবশ্যই যাওয়ার আরও ভাল উপায়।
মিঃ

159
-1 খারাপ কোড। একটি ব্যতিক্রম ধরা ক্ষেত্রগুলি বৈধ করার উপায় নয়।
কেন

99

আমার মনে হয় @"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"কাজ করা উচিত।
আপনার এটি লিখতে হবে

string email = txtemail.Text;
Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
Match match = regex.Match(email);
if (match.Success)
    Response.Write(email + " is correct");
else
    Response.Write(email + " is incorrect");

সতর্ক হোন যে এটি ব্যর্থ হবে যদি:

  1. @প্রতীকের পরে একটি সাবডোমেন রয়েছে ।

  2. আপনি 3 টিরও বেশি দৈর্ঘ্যের সাথে একটি টিএলডি ব্যবহার করেন .info


2
বৈধ হিসাবে test@-online.com প্রদান করে। অবৈধ হওয়া উচিত।
ম্যাথিয়াস এফ

7
আমি বিশ্বাস করি যে এটি নতুন টিএলডি জারি করা হচ্ছে তাতে ব্যর্থ হবে, কারণ আপনি এখন 3 টিরও বেশি অক্ষর সহ টিএলডি রাখতে পারেন।
অ্যারোনলএস

এই রেজেক্সটি "somename@gmail.com.in.in.in.in" বৈধ হিসাবে অনুমতি দেয়।
কৌতূহল

14
gmail.com.in.in.in.in পুরোপুরি বৈধ ডোমেন নাম, সুতরাং কেন এটির অনুমতি দেওয়া হবে না তা আমি দেখতে পাচ্ছি না?
লার্স করুন

@ অ্যালারসউ এর সাথে সম্মত হোন রেজিক্সটি ব্যবহার করা উচিত নয়
বোরিস

68

আমি ব্যবহার করি এমন ইমেল ঠিকানাগুলি যাচাই করার জন্য আমার একটি অভিব্যক্তি রয়েছে।

যেহেতু উপরের কোনওটিই আমার মতো সংক্ষিপ্ত বা যথাযথ নয়, তাই আমি ভেবেছিলাম আমি এটি এখানে পোস্ট করব।

@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*"
+ "@"
+ @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$";

আরও তথ্যের জন্য এটি সম্পর্কে এখানে পড়ুন: সি # - ইমেল নিয়মিত এক্সপ্রেশন

এছাড়াও, ইমেল সিনট্যাক্সের ভিত্তিতে আরএফসি বৈধতার জন্য এই পরীক্ষা করে, ইমেলটি সত্যই বিদ্যমান কিনা তা নয় whether ইমেলটি সত্যই উপস্থিত রয়েছে তা পরীক্ষা করার একমাত্র উপায় হ'ল লিঙ্কে ক্লিক করে বা একটি টোকেন প্রবেশ করিয়ে তারা ইমেলটি যাচাই করে তা প্রেরণ এবং ইমেল করে।

তারপরে মেলিনেটর ডটকমের মতো থ্রো-অ্যাওয়ে ডোমেন রয়েছে। কোনও ইমেল কোনও ফোঁটা ডোমেইনের কিনা তা যাচাই করতে এটি কিছুই করে না।


থ্যাঙ্কস - যাকে আমি সন্ধান করছিলাম! "ডাবল" এবং "সাদা স্পেস" উভয়ই লাগে space
বেনি স্কগবার্গ

5
আমি ইউনিট পরীক্ষা করানোর
রাইয়াস

নতুন টিএলডি সহ, আমাদের সম্ভবত তৃতীয় লাইনে [a-zA-Z] {2,4 replace কে একটি {0 replace দিয়ে প্রতিস্থাপন করা উচিত এবং তারপরে একটি স্ট্রিং.ফর্ম্যাট (প্যাটার্ন, পাইপসপ্রেটেডএলওয়েড্ড্ডস) করা উচিত যেখানে পাইপসপ্রেটেডএলয়েডটিल्डস তৈরি করতে হবে এই ফাইলটির মাধ্যমে পুনরাবৃত্তি হচ্ছে: data.iana.org/TLD/tlds-alpha-by-domain.txt
রাইয়াস

12
পার্থ। আপনার ইমেল দ্বারা আরএফসি বিধিটি কি ভাঙা হয়েছে তা আমাকে বলতে পারেন? কারণ কি অনুমান। আরএফসি অনুসারে, এটি বৈধ !!!! আপনি যদি URL in.in কিনে থাকেন তবে আপনি এই ইমেল ঠিকানাটি তৈরি করতে পারেন। বোঝা?
ছড়া

2
আসলে, দেখে মনে হচ্ছে যে আমি ইতিমধ্যে আমার গিথুবগুলিতে এটি এখানে আপডেট করেছি: github.com/rhyous/EmailRegEx । তবে, w \ এর মধ্যে আন্ডারস্কোর অন্তর্ভুক্ত থাকতে পারে, সুতরাং নির্ভুলতার জন্য আমাকে এটি সম্পাদনা করতে হতে পারে।
ছড়া

36

আমি এটির জন্য এমএসডিএন-তে একটি চমৎকার দলিল পেয়েছি।

কীভাবে: যাচাই করুন যে স্ট্রিংগুলি বৈধ ইমেল ফর্ম্যাটে রয়েছে http://msdn.microsoft.com/en-us/library/01escwtf.aspx (এই কোডটি ইন্টারনেট ডোমেন নামগুলির জন্য অ-এসসিআইআই অক্ষর ব্যবহারের জন্য সমর্থন করে কিনা তা পরীক্ষা করে দেখুন)। )

নেট নেট 2.0 / 3.0 এবং নেট নেট 3.5 এবং এর চেয়ে বেশি এর জন্য 2 টি বাস্তবায়ন রয়েছে।
2.0 / 3.0 সংস্করণটি হ'ল:

bool IsValidEmail(string strIn)
{
    // Return true if strIn is in valid e-mail format.
    return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); 
}

এই পদ্ধতিতে আমার পরীক্ষাগুলি দেয়:

Invalid: @majjf.com
Invalid: A@b@c@example.com
Invalid: Abc.example.com
Valid: j..s@proseware.com
Valid: j.@server1.proseware.com
Invalid: js*@proseware.com
Invalid: js@proseware..com
Valid: ma...ma@jjf.co
Valid: ma.@jjf.com
Invalid: ma@@jjf.com
Invalid: ma@jjf.
Invalid: ma@jjf..com
Invalid: ma@jjf.c
Invalid: ma_@jjf
Invalid: ma_@jjf.
Valid: ma_@jjf.com
Invalid: -------
Valid: 12@hostname.com
Valid: d.j@server1.proseware.com
Valid: david.jones@proseware.com
Valid: j.s@server1.proseware.com
Invalid: j@proseware.com9
Valid: j_9@[129.126.118.1]
Valid: jones@ms1.proseware.com
Invalid: js#internal@proseware.com
Invalid: js@proseware.com9
Invalid: js@proseware.com9
Valid: m.a@hostname.co
Valid: m_a1a@hostname.com
Valid: ma.h.saraf.onemore@hostname.com.edu
Valid: ma@hostname.com
Invalid: ma@hostname.comcom
Invalid: MA@hostname.coMCom
Valid: ma12@hostname.com
Valid: ma-a.aa@hostname.com.edu
Valid: ma-a@hostname.com
Valid: ma-a@hostname.com.edu
Valid: ma-a@1hostname.com
Valid: ma.a@1hostname.com
Valid: ma@1hostname.com

1
মেলে না[me]@whatever.museum
টোটো

অবৈধ: Abc.example.com হ্যাঁ, যা সঠিকভাবে কাজ করে, তবে এই "toms.email। @ Gmail.com"; কাজ করে না
টম স্টিকেল

1
একটি যোগ চিহ্ন যোগ করতে হয়েছিল: `@" ^ ([\ ডাব্লু - \। +] +) @ (([[[0-9]] {1,3} \। [0-9] {1,3} \। " [0-9] {1,3} \) |। (। ([\ W -] \) + +)) ([zA-জেড] {2,4} | [0-9] {1, 3}) (]?) $ "` 11 এ থাকা চারটি বাক্স] গুগল এবং হটমেল এলিয়াসিং @ সাইন এর আগে প্রথম বিভাগে প্লাস সাইন ইন করার অনুমতি দেয়।
হেনক জে মিউলেক্যাম্প

এটি উপরের মতোই। বৈধ ইমেল ঠিকানা হিসাবে "somename@gmail.com.in.in.in" অনুমতি দিচ্ছে ... !!
কৌতূহল

9
@ পার্থ্রিবেদী কেন আপনি জোর দিচ্ছেন যে somename@gmail.com.in.in.inএটি একটি বৈধ ইমেল ঠিকানা নয়?
Ivaylo স্লাভভ

15

নিম্নলিখিত কোডটি গিথুবটিতে মাইক্রোসফ্টের ডেটা টীকা প্রয়োগের উপর ভিত্তি করে এবং আমি মনে করি এটি ইমেলের জন্য সর্বাধিক সম্পূর্ণ বৈধতা:

public static Regex EmailValidation()
{
    const string pattern = @"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$";
    const RegexOptions options = RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture;

    // Set explicit regex match timeout, sufficient enough for email parsing
    // Unless the global REGEX_DEFAULT_MATCH_TIMEOUT is already set
    TimeSpan matchTimeout = TimeSpan.FromSeconds(2);

    try
    {
        if (AppDomain.CurrentDomain.GetData("REGEX_DEFAULT_MATCH_TIMEOUT") == null)
        {
            return new Regex(pattern, options, matchTimeout);
        }
    }
    catch
    {
        // Fallback on error
    }

    // Legacy fallback (without explicit match timeout)
    return new Regex(pattern, options);
}

1
একটি পেশাদার উত্স থেকে এটি পেয়ে ভাল লাগছে (অন্যদের বিরুদ্ধে অবশ্যই কিছুই নয়); প্রশংসা করেন।
নিকোলাস পিটারসন

1
এটি সেরা রেজেেক্স হওয়া উচিত কারণ এটি আরএফসি 5321 এবং 5322 যাচাইয়ের জন্য মনে হচ্ছে It এটি কিছু ইউনিট পরীক্ষার হাতছাড়া করে।
ToXinE

ইমেল ঠিকানার শেষে বিন্দু ক্যাপচার করে না।
সেলোরিও

12

এটি আরএফসি 5321 এবং 5322 এর সমস্ত প্রয়োজনীয়তা পূরণ করে না, তবে এটি নিম্নলিখিত সংজ্ঞাগুলির সাথে কাজ করে।

@"^([0-9a-zA-Z]([\+\-_\.][0-9a-zA-Z]+)*)+"@(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z0-9]{2,17})$";

নীচে কোড দেওয়া আছে

const String pattern =
   @"^([0-9a-zA-Z]" + //Start with a digit or alphabetical
   @"([\+\-_\.][0-9a-zA-Z]+)*" + // No continuous or ending +-_. chars in email
   @")+" +
   @"@(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z0-9]{2,17})$";

var validEmails = new[] {
        "ma@hostname.com",
        "ma@hostname.comcom",
        "MA@hostname.coMCom",
        "m.a@hostname.co",
        "m_a1a@hostname.com",
        "ma-a@hostname.com",
        "ma-a@hostname.com.edu",
        "ma-a.aa@hostname.com.edu",
        "ma.h.saraf.onemore@hostname.com.edu",
        "ma12@hostname.com",
        "12@hostname.com",
};
var invalidEmails = new[] {
        "Abc.example.com",     // No `@`
        "A@b@c@example.com",   // multiple `@`
        "ma...ma@jjf.co",      // continuous multiple dots in name
        "ma@jjf.c",            // only 1 char in extension
        "ma@jjf..com",         // continuous multiple dots in domain
        "ma@@jjf.com",         // continuous multiple `@`
        "@majjf.com",          // nothing before `@`
        "ma.@jjf.com",         // nothing after `.`
        "ma_@jjf.com",         // nothing after `_`
        "ma_@jjf",             // no domain extension 
        "ma_@jjf.",            // nothing after `_` and .
        "ma@jjf.",             // nothing after `.`
    };

foreach (var str in validEmails)
{
    Console.WriteLine("{0} - {1} ", str, Regex.IsMatch(str, pattern));
}
foreach (var str in invalidEmails)
{
    Console.WriteLine("{0} - {1} ", str, Regex.IsMatch(str, pattern));
}

1
এই মত প্রকাশের বৈধ ঠিকানাগুলি মিলছে না !#$%&'*+-/=?^_{|} ~ @ example.com` বা এই এক।Dörte@Sörensen.example.com
হিজড়া

7

সেরা ইমেল বৈধতা রেগেক্স

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

এবং এটির ব্যবহার: -

bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);

6

আকারের জন্য এটি ব্যবহার করে দেখুন:

public static bool IsValidEmailAddress(this string s)
{
    var regex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
    return regex.IsMatch(s);
}

5

এটি চেষ্টা করুন, এটি আমার জন্য কাজ করছে:

public bool IsValidEmailAddress(string s)
{
    if (string.IsNullOrEmpty(s))
        return false;
    else
    {
        var regex = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
        return regex.IsMatch(s) && !s.EndsWith(".");
    }
}

5

এই রেজেক্স পুরোপুরি কাজ করে:

bool IsValidEmail(string email)
{
    return Regex.IsMatch(email, @"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))\z");
}

4

এটি মন্তব্যগুলিতে অন্যদের দ্বারা উল্লিখিত অবৈধ ইমেলগুলি প্রতিরোধ করে:

Abc.@example.com
Abc..123@example.com
name@hotmail
toms.email.@gmail.com
test@-online.com

এটি ডাবল ডট সহ ইমেলগুলি প্রতিরোধ করে:

hello..world@example..com

এটি খুঁজে পেতে যতগুলি অবৈধ ইমেল ঠিকানা দিয়ে পরীক্ষা করার চেষ্টা করুন।

using System.Text.RegularExpressions;

public static bool IsValidEmail(string email)
{
    return Regex.IsMatch(email, @"\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}\z")
        && Regex.IsMatch(email, @"^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*");
}

সি # তে নিয়মিত এক্সপ্রেশন ব্যবহার করে বৈধ ইমেল ঠিকানাটি দেখুন ।


এটি আমার সমস্ত অবৈধ ইমেল ঠিকানার জন্য মিথ্যা ফিরিয়ে দেয়। দুর্ভাগ্যক্রমে, অনেক বৈধ ইমেল ঠিকানাগুলির জন্যও মিথ্যা ফিরিয়ে দেয়।
চিহ্নিত করুন

4

EF6 অ্যাট্রিবিউট ভিত্তিক ইমেল বৈধতা কেন ব্যবহার করবেন না?

আপনি উপরে দেখতে পাচ্ছেন, ই-মেইলের জন্য রেজেক্স বৈধতার সর্বদা এতে কিছু গর্ত থাকে। আপনি EF6 তথ্য টীকা ব্যবহার করে থাকেন, আপনি সহজেই সঙ্গে নির্ভরযোগ্য এবং শক্তিশালী ই-মেইল বৈধতা অর্জন করতে পারেন EmailAddress তথ্য টীকা যে জন্য উপলব্ধ বৈশিষ্ট্য। আমি যখন ই-মেইল ইনপুট ক্ষেত্রে মোবাইল ডিভাইসের নির্দিষ্ট রেগেক্স ব্যর্থতা পেলাম তখন আমি ই-মেইলের জন্য পূর্বে ব্যবহৃত রেগেক্স বৈধতা সরিয়ে ফেলতে হয়েছিল। যখন ইমেল বৈধতার জন্য ডেটা টীকা বৈশিষ্ট্য ব্যবহৃত হয়, তখন মোবাইলে সমস্যাটি সমাধান হয়ে যায়।

public class LoginViewModel
{
    [EmailAddress(ErrorMessage = "The email format is not valid")]
    public string Email{ get; set; }


1
public static bool ValidateEmail(string str)
{                       
     return Regex.IsMatch(str, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
}

আমি ইমেল ঠিকানাটি যাচাই করতে উপরের কোডটি ব্যবহার করি।


1
   public bool VailidateEntriesForAccount()
    {
       if (!(txtMailId.Text.Trim() == string.Empty))
        {
            if (!IsEmail(txtMailId.Text))
            {
                Logger.Debug("Entered invalid Email ID's");
                MessageBox.Show("Please enter valid Email Id's" );
                txtMailId.Focus();
                return false;
            }
        }
     }
   private bool IsEmail(string strEmail)
    {
        Regex validateEmail = new Regex("^[\\W]*([\\w+\\-.%]+@[\\w\\-.]+\\.[A-Za-z] {2,4}[\\W]*,{1}[\\W]*)*([\\w+\\-.%]+@[\\w\\-.]+\\.[A-Za-z]{2,4})[\\W]*$");
        return validateEmail.IsMatch(strEmail);
    }

যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডের উত্তর দেয় কীভাবে এই প্রশ্নের উত্তর তার দীর্ঘমেয়াদী মানকে উন্নত করে
অতিরিক্ত বিষয়গুলি সরবরাহ করে

1
string patternEmail = @"(?<email>\w+@\w+\.[a-z]{0,3})";
Regex regexEmail = new Regex(patternEmail);

1

এটি একটি ইমেল বৈধকরণকারী তৈরি করার জন্য অনেক প্রচেষ্টা নিয়েছে যা ইমেলের জন্য বিশ্বব্যাপী সমস্ত প্রয়োজনীয় প্রয়োজনীয়তা রাখে।

এক্সটেনশন পদ্ধতি যার সাথে আপনি কল করতে পারেন:

myEmailString.IsValidEmailAddress();

রেজেক্স প্যাটার্ন স্ট্রিং কল করে আপনি পেতে পারেন:

var myPattern = Regex.EmailPattern;

কোড (বেশিরভাগ মন্তব্য):

    /// <summary>
    /// Validates the string is an Email Address...
    /// </summary>
    /// <param name="emailAddress"></param>
    /// <returns>bool</returns>
    public static bool IsValidEmailAddress(this string emailAddress)
    {
        var valid = true;
        var isnotblank = false;

        var email = emailAddress.Trim();
        if (email.Length > 0)
        {
            // Email Address Cannot start with period.
            // Name portion must be at least one character
            // In the Name, valid characters are:  a-z 0-9 ! # _ % & ' " = ` { } ~ - + * ? ^ | / $
            // Cannot have period immediately before @ sign.
            // Cannot have two @ symbols
            // In the domain, valid characters are: a-z 0-9 - .
            // Domain cannot start with a period or dash
            // Domain name must be 2 characters.. not more than 256 characters
            // Domain cannot end with a period or dash.
            // Domain must contain a period
            isnotblank = true;
            valid = Regex.IsMatch(email, Regex.EmailPattern, RegexOptions.IgnoreCase) &&
                !email.StartsWith("-") &&
                !email.StartsWith(".") &&
                !email.EndsWith(".") && 
                !email.Contains("..") &&
                !email.Contains(".@") &&
                !email.Contains("@.");
        }

        return (valid && isnotblank);
    }

    /// <summary>
    /// Validates the string is an Email Address or a delimited string of email addresses...
    /// </summary>
    /// <param name="emailAddress"></param>
    /// <returns>bool</returns>
    public static bool IsValidEmailAddressDelimitedList(this string emailAddress, char delimiter = ';')
    {
        var valid = true;
        var isnotblank = false;

        string[] emails = emailAddress.Split(delimiter);

        foreach (string e in emails)
        {
            var email = e.Trim();
            if (email.Length > 0 && valid) // if valid == false, no reason to continue checking
            {
                isnotblank = true;
                if (!email.IsValidEmailAddress())
                {
                    valid = false;
                }
            }
        }
        return (valid && isnotblank);
    }

    public class Regex
    {
        /// <summary>
        /// Set of Unicode Characters currently supported in the application for email, etc.
        /// </summary>
        public static readonly string UnicodeCharacters = "À-ÿ\p{L}\p{M}ÀàÂâÆæÇçÈèÉéÊêËëÎîÏïÔôŒœÙùÛûÜü«»€₣äÄöÖüÜß"; // German and French

        /// <summary>
        /// Set of Symbol Characters currently supported in the application for email, etc.
        /// Needed if a client side validator is being used.
        /// Not needed if validation is done server side.
        /// The difference is due to subtle differences in Regex engines.
        /// </summary>
        public static readonly string SymbolCharacters = @"!#%&'""=`{}~\.\-\+\*\?\^\|\/\$";

        /// <summary>
        /// Regular Expression string pattern used to match an email address.
        /// The following characters will be supported anywhere in the email address:
        /// ÀàÂâÆæÇçÈèÉéÊêËëÎîÏïÔôŒœÙùÛûÜü«»€₣äÄöÖüÜß[a - z][A - Z][0 - 9] _
        /// The following symbols will be supported in the first part of the email address(before the @ symbol):
        /// !#%&'"=`{}~.-+*?^|\/$
        /// Emails cannot start or end with periods,dashes or @.
        /// Emails cannot have two @ symbols.
        /// Emails must have an @ symbol followed later by a period.
        /// Emails cannot have a period before or after the @ symbol.
        /// </summary>
        public static readonly string EmailPattern = String.Format(
            @"^([\w{0}{2}])+@{1}[\w{0}]+([-.][\w{0}]+)*\.[\w{0}]+([-.][\w{0}]+)*$",                     //  @"^[{0}\w]+([-+.'][{0}\w]+)*@[{0}\w]+([-.][{0}\w]+)*\.[{0}\w]+([-.][{0}\w]+)*$",
            UnicodeCharacters,
            "{1}",
            SymbolCharacters
        );
    }

1

আপনার ইমেল আইডি যাচাই করতে, আপনি কেবল এই জাতীয় পদ্ধতি তৈরি করতে এবং এটি ব্যবহার করতে পারেন।

    public static bool IsValidEmail(string email)
    {
        var r = new Regex(@"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$");
        return !String.IsNullOrEmpty(email) && r.IsMatch(email);
    }

এটি সত্য / মিথ্যা প্রত্যাবর্তন করবে। (বৈধ / অবৈধ ইমেল আইডি)


1

এটি এখন পর্যন্ত এটি আমার প্রিয় পদ্ধতির:

public static class CommonExtensions
{
    public static bool IsValidEmail(this string thisEmail)
        => !string.IsNullOrWhiteSpace(thisEmail) &&
           new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$").IsMatch(thisEmail);
}

তারপরে তৈরি স্ট্রিং এক্সটেনশনটি ব্যবহার করুন:

if (!emailAsString.IsValidEmail()) throw new Exception("Invalid Email");

1

এটি যদি কাজ না করে তবে আমাকে জানান let

public static bool isValidEmail(this string email)
{

    string[] mail = email.Split(new string[] { "@" }, StringSplitOptions.None);

    if (mail.Length != 2)
        return false;

    //check part before ...@

    if (mail[0].Length < 1)
        return false;

    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z0-9_\-\.]+$");
    if (!regex.IsMatch(mail[0]))
        return false;

    //check part after @...

    string[] domain = mail[1].Split(new string[] { "." }, StringSplitOptions.None);

    if (domain.Length < 2)
        return false;

    regex = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z0-9_\-]+$");

    foreach (string d in domain)
    {
        if (!regex.IsMatch(d))
            return false;
    }

    //get TLD
    if (domain[domain.Length - 1].Length < 2)
        return false;

    return true;

}

1

এই মামলার জন্য এখানে আমাদের রেজেক্স রয়েছে:

@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
                       @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
                       @".)+))([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$",

তিনটি অংশ রয়েছে, যা চেক করা আছে। শেষটি সম্ভবত আপনার প্রয়োজন এক। নির্দিষ্ট শব্দটি {2,6} আপনাকে শেষে টিএলডির ন্যূনতম / সর্বাধিক দৈর্ঘ্য নির্দেশ করে। আছে HTH


0

নিম্নলিখিত কোড ব্যবহার করে দেখুন:

using System.Text.RegularExpressions;
if  (!Regex.IsMatch(txtEmail.Text, @"^[a-z,A-Z]{1,10}((-|.)\w+)*@\w+.\w{3}$"))
        MessageBox.Show("Not valid email.");

0

STRING অনুসন্ধানে সি # তে রেগেক্স পদ্ধতি ব্যবহার করা হচ্ছে

নিয়মিত এক্সপ্রেশন দ্বারা কোনও ইমেল কীভাবে যাচাই করবেন?

string EmailPattern = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
if (Regex.IsMatch(Email, EmailPattern, RegexOptions.IgnoreCase))
{
    Console.WriteLine("Email: {0} is valid.", Email);
}
else
{
    Console.WriteLine("Email: {0} is not valid.", Email);
}

রেফারেন্স স্ট্রিং.আজেজেক্স () পদ্ধতিটি ব্যবহার করুন


0

1

^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$

2

^(([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

0

আমি মনে করি আপনার ক্যারেট এবং ডলারের চিহ্নটি এই সমস্যার একটি অংশ আপনারও নিয়মটিকে কিছুটা পরিবর্তন করা উচিত, আমি পরের @ "[:] + ([\ ডাব্লু .-] +) @ @ ([\ ডাব্লু -।]) + + ব্যবহার করি ((। (\ W) {2,3}) + +) "


আপনি যখন ফলাফলটি ট্রিম (':') ব্যবহার করেন
এবিমোহররাম

0

রেজেক্স ইমেল প্যাটার্ন:

^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[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]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$

0

আমি Regex.IsMatch () ব্যবহার করছি।

সবার আগে আপনাকে পরবর্তী বিবৃতিটি যুক্ত করতে হবে:

using System.Text.RegularExpressions;

তারপরে পদ্ধতিটি দেখে মনে হচ্ছে:

private bool EmailValidation(string pEmail)
{
                 return Regex.IsMatch(pEmail,
                 @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
                 @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$",
                 RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
}

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


0

কোন নিখুঁত রেগুলার এক্সপ্রেশন, কিন্তু এই এক গবেষণা উপর ভিত্তি করে বেশ জোরদার আমি মনে করি, RFC5322 । এবং সি # স্ট্রিং ইন্টারপোলেশন সহ, অনুসরণ করা বেশ সহজ, আমিও মনে করি।

const string atext = @"a-zA-Z\d!#\$%&'\*\+-/=\?\^_`\{\|\}~";
var localPart = $"[{atext}]+(\\.[{atext}]+)*";
var domain = $"[{atext}]+(\\.[{atext}]+)*";
Assert.That(() => EmailRegex = new Regex($"^{localPart}@{domain}$", Compiled), 
Throws.Nothing);

দিয়ে ভোট দেওয়া হয়েছে NUnit 2.x


0

ইমেল যাচাই করার জন্য আমি একটি ফর্মভালিডেশন ইউটিলেস ক্লাস তৈরি করেছি:

public static class FormValidationUtils
{
    const string ValidEmailAddressPattern = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$";

    public static bool IsEmailValid(string email)
    {
        var regex = new Regex(ValidEmailAddressPattern, RegexOptions.IgnoreCase);
        return regex.IsMatch(email);
    }
}

0

রেগেক্স ব্যবহার করে ইমেল বৈধতা

    string pattern = @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z";

    //check first string
   if (Regex.IsMatch(EmailId1 , pattern))
   {    
       //if email is valid
        Console.WriteLine(EmailId1+ " is a valid Email address ");
   }

সূত্র: ইমেল বৈধতা সি #

মেলএড্রেস.মেলএড্রেস (স্ট্রিং) ক্লাস কনস্ট্রাক্টর ব্যবহার করে রেগেক্স ছাড়াই বৈধতা

public bool IsEmailValid(string emailaddress)
{
 try
 {
    MailAddress m = new MailAddress(emailaddress);
    return true;
 }
 catch (FormatException)
 {
    return false;
 }
}

এটি মিলবে না me@localhost। দয়া করে এই সাইটগুলি একবার দেখুন: টিএলডি তালিকা ; বৈধ / অবৈধ ঠিকানা ; আরএফসি 822 ইমেল ঠিকানার জন্য রিজেেক্স
টোটো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.