javascript টিউটোরিয়াল - কিভাবে জাভাস্ক্রিপ্ট একটি ইমেইল ঠিকানা যাচাই করতে?




কোড ফাংশন (25)

কিভাবে একটি ইমেইল ঠিকানা জাভাস্ক্রিপ্ট যাচাই করা যাবে?


Answers

RFC5322 এর সাথে নিশ্চিত যা কখনও সেরা 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])+


এখানে ইমেল ঠিকানা যাচাই করতে নিয়মিত এক্সপ্রেশন ব্যবহার সম্পর্কে একটি খুব ভাল আলোচনা হয়; " http://fightingforalostcause.net/misc/2006/compare-email-regex.php "

এখানে রেফারেন্স উদ্দেশ্যে বর্তমান শীর্ষ অভিব্যক্তি, জাভাস্ক্রিপ্ট সামঞ্জস্যপূর্ণ:

/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i

Regex 2018 আপডেট! এটা চেষ্টা কর

let val = '[email protected]';
if(/^[a-z0-9][a-z0-9-_\.][email protected]([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val)) {
   console.log('passed');
}

টাইপস্ক্রিপ্ট সংস্করণ সম্পূর্ণ

//
export const emailValid = (val:string):boolean => /^[a-z0-9][a-z0-9-_\.][email protected]([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val);

আরো তথ্য https://git.io/vhEfc


RFC গুলির সম্মতিতে ইমেল ঠিকানার সঠিক বৈধতা এমন একটি জিনিস নয় যা এক-মাছ ধরার নিয়মিত অভিব্যক্তি অর্জন করতে পারে। পিএইচপিতে পাওয়া সবচেয়ে ভাল সমাধান সহ একটি নিবন্ধ হল একটি বৈধ ইমেইল ঠিকানা কী? । স্পষ্টত, এটি জাভা পোর্ট করা হয়েছে। আমি মনে করি ফন্ট জাভাস্ক্রিপ্ট পোর্ট করা এবং ব্যবহার করা খুব জটিল। জাভাস্ক্রিপ্ট / node.js পোর্ট: https://www.npmjs.com/package/email-addresses

একটি ভাল অভ্যাস ক্লায়েন্টের উপর আপনার ডেটা যাচাই করতে হয়, তবে সার্ভারে যাচাইকরণটি আবার পরীক্ষা করে দেখুন। মনে রাখবেন, ক্লায়েন্টে একটি স্ট্রিং একটি বৈধ ইমেল ঠিকানার মত দেখাচ্ছে কিনা এবং সার্ভারে কঠোর চেক সঞ্চালন করে আপনি কেবল তা পরীক্ষা করতে পারেন।

এখানে একটি জাভাস্ক্রিপ্ট ফাংশন যা আমি একটি স্ট্রিং একটি বৈধ মেইল ​​ঠিকানার মতো দেখতে চাই কিনা তা পরীক্ষা করার জন্য ব্যবহার করি:

function looksLikeMail(str) {
    var lastAtPos = str.lastIndexOf('@');
    var lastDotPos = str.lastIndexOf('.');
    return (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2);
}

ব্যাখ্যা:

  • lastAtPos < lastDotPos শেষ lastAtPos < lastDotPos : শেষ @ শেষ হওয়ার আগে হওয়া উচিত . যেহেতু @ সার্ভারের নাম হতে পারে না (যতদূর আমি জানি)।

  • lastAtPos > 0 : শেষের আগে কিছু (ইমেল ব্যবহারকারীর নাম) থাকা উচিত।

  • str.indexOf('@@') == -1 : str.indexOf('@@') == -1 থাকা উচিত নয়। ইমেল @ ব্যবহারকারীর নামের শেষ চরিত্র হিসাবে @ প্রদর্শিত হলেও এটি উদ্ধৃত করতে হবে " ঠিকানাটির মধ্যে @ @ এবং শেষ @ মধ্যে হতে হবে।

  • lastDotPos > 2 : শেষ বিন্দুতে কমপক্ষে তিনটি অক্ষর থাকা উচিত, উদাহরণস্বরূপ [email protected]

  • (str.length - lastDotPos) > 2 : দুইটি অক্ষরের ডোমেন তৈরি করার জন্য শেষ বিন্দু পরে যথেষ্ট অক্ষর থাকা উচিত। বন্ধনী প্রয়োজন হলে আমি নিশ্চিত নই।


node-validator কীভাবে এটি করে:

/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~][email protected](?:(?:(?:[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])\]))$/

আমি এটি সর্বোত্তম সমাধান হিসাবে খুঁজে পেয়েছি:

/^[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]+$/

এটি নিম্নলিখিত ফরম্যাটের অনুমতি দেয়:

1.  [email protected]
2.  [email protected]
3.  [email protected]
4.  [email protected]
9.  #!$%&'*+-/=?^_`{}|[email protected]
6.  "()[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
7.  " "@example.org (space between the quotes)
8.  üñîçøðé@example.com (Unicode characters in local part)
9.  üñîçøðé@üñîçøðé.com (Unicode characters in domain part)
10. Pelé@example.com (Latin)
11. δοκιμή@παράδειγμα.δοκιμή (Greek)
12. 我買@屋企.香港 (Chinese)
13. 甲斐@黒川.日本 (Japanese)
14. чебурашка@ящик-с-апельсинами.рф (Cyrillic)

এটি স্পষ্টভাবে বহুমুখী এবং সমস্ত গুরুত্বপূর্ণ আন্তর্জাতিক অক্ষরকে অনুমোদন দেয়, যদিও এখনও মৌলিক [email protected] বিন্যাস প্রয়োগ করে। এটি RFC দ্বারা টেকনিক্যালি মঞ্জুরিপ্রাপ্ত স্পেসগুলি ব্লক করবে, কিন্তু এগুলি এতই বিরল যে আমি এটি করতে পেরে খুশি।


এটি http://codesnippets.joyent.com/posts/show/1917 থেকে চুরি হয়েছে

email = $('email');
filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (filter.test(email.value)) {
  // Yay! valid
  return true;
}
else
  {return false;}

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

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


TLD এর অস্তিত্ব পরীক্ষা করে না এমন একটি সমাধান অসম্পূর্ণ।

এই প্রশ্নের প্রায় সব উত্তর ইমেল ঠিকানা যাচাই করতে Regex ব্যবহার করে সুপারিশ। আমি Regex একটি মৌলিক বৈধতা জন্য শুধুমাত্র ভাল মনে হয়। মনে হচ্ছে ইমেইল ঠিকানাগুলির যাচাইকরণ বৈধতা দুটি পৃথক সমস্যা:

1- ইমেল বিন্যাস যাচাইকরণ: ইমেলটি RFC 5322 এ ইমেলগুলির বিন্যাস এবং প্যাটার্নের সাথে সঙ্গতিপূর্ণ কিনা এবং TLD প্রকৃতপক্ষে বিদ্যমান থাকলে তা নিশ্চিত করা। সমস্ত বৈধ টিএলডি একটি তালিকা here পাওয়া here

উদাহরণস্বরূপ, ঠিকানাটি [email protected]রেজেক্সটি পাস করলেও, এটি বৈধ ইমেল নয়, কারণ cccআইএএনএ দ্বারা শীর্ষ স্তরের ডোমেন নয়।

2- নিশ্চিত ইমেল আসলে বিদ্যমান মেকিং: এই কাজ করার জন্য, একমাত্র বিকল্প হয় ব্যবহারকারী একটি ইমেল পাঠাতে


আমি জ্যামনের উত্তর সামান্য পরিবর্তন করেছি যারা এই ফর্মের মধ্যে সত্যিকারের বৈধ বৈধতা চান:

[email protected]

নিয়মিত অভিব্যক্তি:

/\[email protected]\S+\.\S+/

উদাহরণ জাভাস্ক্রিপ্ট ফাংশন

function validateEmail(email) 
{
    var re = /\[email protected]\S+\.\S+/;
    return re.test(email);
}

শুধু সম্পূর্ণতার জন্য, এখানে আপনার আরএফসি 28২২ সম্মতিপূর্ণ রেজেক্স রয়েছে

সরকারী মান RFC 2822 হিসাবে পরিচিত হয়। এটি সিনট্যাক্সকে বর্ণনা করে যে বৈধ ইমেল ঠিকানাগুলি মেনে চলতে হবে। আপনি এই নিয়মিত অভিব্যক্তিটি দিয়ে এটি প্রয়োগ করতে পারেন ( কিন্তু আপনি এটি পড়তে পারেন না ):

(?:[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])+)\])

(...) আমরা দ্বি উদ্ধৃতি এবং বর্গাকার বন্ধনী ব্যবহার করে সিনট্যাক্সকে বাদ দিলে আমরা আরএফসি 28২২ এর আরও বাস্তব প্রয়োগ করতে পারি। এটি এখনও প্রকৃত ব্যবহারে সকল ইমেল ঠিকানাগুলির 99.99% মিলবে।

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

আপনি যে কোনও পরিবর্তন করতে পারেন যা কোনও দুই-অক্ষরের দেশ কোড শীর্ষ স্তরের ডোমেন এবং শুধুমাত্র নির্দিষ্ট জেনেরিক শীর্ষ স্তরের ডোমেইনগুলিকে অনুমতি দেয়। এই regex [email protected] মত ডামি ইমেল ঠিকানা ফিল্টারনতুন শীর্ষ স্তরের ডোমেন যুক্ত হওয়ার পরে আপনাকে এটি আপডেট করতে হবে

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[AZ]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b

তাই সরকারী মান অনুসরণ করার পরে, এখনও বাণিজ্য বন্ধ করা আছে। অনলাইন লাইব্রেরি বা আলোচনা ফোরাম থেকে নিয়মিত এক্সপ্রেশন অনুলিপি করবেন না। সর্বদা আপনার নিজের ডেটা এবং আপনার নিজের অ্যাপ্লিকেশনগুলিতে তাদের পরীক্ষা করুন।

গুরুত্ব খনি


HTML5 নিজেই ইমেইল বৈধতা আছে। যদি আপনার ব্রাউজার HTML5 সমর্থন করে তবে আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন।

<form><input type="email" placeholder="[email protected]">
    <input type="submit">
</form>

jsFiddle লিঙ্ক

HTML5 স্পিক থেকে :

একটি বৈধ ই-মেইল ঠিকানা একটি স্ট্রিং যা নিম্নোক্ত ABNF এর email উত্পাদনের সাথে মেলে, যার জন্য অক্ষর সেটটি ইউনিকোড।

email   = 1*( atext / "." ) "@" label *( "." label )
label   = let-dig [ [ ldh-str ] let-dig ]  ; limited to a length of 63 characters by RFC 1034 section 3.5
atext   = < as defined in RFC 5322 section 3.2.3 >
let-dig = < as defined in RFC 1034 section 3.5 >
ldh-str = < as defined in RFC 1034 section 3.5 >

এই প্রয়োজনীয়তাটি RFC 5322 এর একটি ইচ্ছাকৃত লঙ্ঘন যা ই-মেইল ঠিকানাগুলির জন্য একটি সিনট্যাক্স সংজ্ঞায়িত করে যা একযোগে খুব কঠোর ("@" চরিত্রের আগে), খুব অস্পষ্ট ("@" চরিত্রের পরে) এবং খুব ল্যাক (মন্তব্যগুলি মঞ্জুরি দেয় , হোয়াইটস্পেস অক্ষর, এবং সর্বাধিক ব্যবহারকারীদের অপরিচিত অপরিহার্য স্ট্রিং উদ্ধৃত) এখানে ব্যবহারিক ব্যবহার হতে।

নিম্নোক্ত জাভাস্ক্রিপ্ট- এবং পার্ল-সামঞ্জস্যপূর্ণ নিয়মিত অভিব্যক্তিটি উপরের সংজ্ঞাটির বাস্তবায়ন।

/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected][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])?)*$/

আপনার বৈধতা ফাংশন ভিতরে এই কোড ব্যবহার করুন:

var emailID = document.forms["formName"]["form element id"].value;
atpos = emailID.indexOf("@");
dotpos = emailID.lastIndexOf(".");
if (atpos < 1 || ( dotpos - atpos < 2 ))
{
    alert("Please enter correct email ID")
    return false;
}

অন্যথায় আপনি jQuery ব্যবহার করতে পারেন । নিয়ম সংজ্ঞায়িত:

eMailId: {
    required: true,
    email: true
}

উইকিপিডিয়া স্ট্যান্ডার্ড মেইল ​​সিনট্যাক্স:

https://en.wikipedia.org/wiki/Email_address#Examples https://fr.wikipedia.org/wiki/Adresse_%C3%A9lectronique#Syntaxe_exacte

function validMail(mail)
{
    return /^(([^<>()\[\]\.,;:\[email protected]\"]+(\.[^<>()\[\]\.,;:\[email protected]\"]+)*)|(\".+\"))@(([^<>()\.,;\[email protected]\"]+\.{0,1})+([^<>()\.,;:\[email protected]\"]{2,}|[\d\.]+))$/.test(mail);
}

// VALID MAILS

validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('[email protected]') // Return true
validMail('user+mailbox/department=shipp[email protected]') // Return true
validMail('"very.(),:;<>[]\".VERY.\"[email protected]\\ \"very\".unusual"@strange.example.com') // Return true
validMail('!#$%&\'*+-/=?^_`.{|}[email protected]') // Return true
validMail('"()<>[]:,;@\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org') // Return true
validMail('"[email protected]"@example.com') // Return true
validMail('"Fred Bloggs"@example.com') // Return true
validMail('"Joe.\\Blow"@example.com') // Return true
validMail('Loïc.Accentué@voilà.fr') // Return true
validMail('" "@example.org') // Return true
validMail('[email protected][IPv6:2001:DB8::1]') // Return true

// INVALID MAILS

validMail('Abc.example.com') // Return false
validMail('[email protected]@[email protected]') // Return false
validMail('a"b(c)d,e:f;g<h>i[j\k][email protected]') // Return false
validMail('just"not"[email protected]') // Return false
validMail('this is"not\[email protected]') // Return false
validMail('this\ still\"not\\[email protected]') // Return false
validMail('[email protected]') // Return false
validMail('[email protected]') // Return false

এই পরীক্ষাটি দেখান: https://regex101.com/r/LHJ9gU/1


স্ক্রার্টের বিপরীতে , এখানে একটি জটিল সমাধান রয়েছে, তবে এটি সঠিকভাবে ইমেল যাচাই করার একটি দুর্দান্ত কাজ করে:

function isEmail(email) { 
    return /^((([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])))$/i.test(email);
} 

তাই ব্যবহার করুন:

if (isEmail('[email protected]')){ console.log('This is email is valid'); }

আমি সত্যিই এই সমস্যা সমাধানের জন্য উন্মুখ। তাই আমি উপরে ইমেল বৈধতা নিয়মিত অভিব্যক্তি সংশোধন করা হয়েছে

উইকিপিডিয়া ইমেল ঠিকানা উদাহরণ পাস।

এবং আপনি here ফলাফল দেখতে পারেন।


<form name="validation" onSubmit="return checkbae()">
    Please input a valid email address:<br />

    <input type="text" size=18 name="emailcheck">
    <input type="submit" value="Submit">
</form>

<script language="JavaScript1.2">
    var testresults
    function checkemail(){
        var str = document.validation.emailcheck.value
        var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
        if (filter.test(str))
            testresults = true
        else {
            alert("Please input a valid email address!")
            testresults = false
        }
        return (testresults)
    }
</script>

<script>
    function checkbae(){
        if (document.layers || document.getElementById || document.all)
            return checkemail()
        else
            return true
    }
</script>

আধুনিক ব্রাউজারে আপনি বিশুদ্ধ জাভাস্ক্রিপ্ট এবং DOM এর মাধ্যমে @ সুশিলের উত্তরের উপরে তৈরি করতে পারেন:

function validateEmail(value) {
  var input = document.createElement('input');

  input.type = 'email';
  input.required = true;
  input.value = value;

  return typeof input.checkValidity === 'function' ? input.checkValidity() : /\[email protected]\S+\.\S+/.test(value);
}

আমি fiddle http://jsfiddle.net/boldewyn/2b6d5/ মধ্যে একটি উদাহরণ স্থাপন করেছি। Squirtle এর উত্তর থেকে বৈশিষ্ট্য সনাক্তকরণ এবং বেয়ার হাড়ের বৈধতার সাথে মিলিত, এটি নিয়মিত অভিব্যক্তি গণহত্যার মাধ্যমে আপনাকে মুক্ত করে এবং পুরানো ব্রাউজারগুলিতে বার্ক না করে।


জাভাস্ক্রিপ্ট একটি নিয়মিত অভিব্যক্তি মেলে পারে:

emailAddress.match( / some_regex /);

এখানে ইমেলগুলির জন্য একটি RFC22 নিয়মিত অভিব্যক্তি রয়েছে:

^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*
"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x
7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<
!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])
[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$

নিয়মিত এক্সপ্রেশন ব্যবহার করে সম্ভবত সবচেয়ে ভাল উপায়। আপনি here পরীক্ষাগুলির একটি গুচ্ছ দেখতে পারেন ( chromium থেকে নেওয়া)

function validateEmail(email) {
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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,}))$/;
    return re.test(String(email).toLowerCase());
}

এখানে নিয়মিত এক্সপ্রেশন উদাহরণ যা ইউনিকোড গ্রহণ করে:

var re = /^(([^<>()\[\]\.,;:\[email protected]\"]+(\.[^<>()\[\]\.,;:\[email protected]\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\[email protected]\"]+\.)+[^<>()[\]\.,;:\[email protected]\"]{2,})$/i;

কিন্তু জাভাস্ক্রিপ্ট বৈধতা উপর নির্ভর করতে হবে যে এক মনে রাখবেন। জাভাস্ক্রিপ্ট সহজেই অক্ষম করা যাবে। এই পাশাপাশি সার্ভার পাশাপাশি বৈধ করা উচিত।

এখানে উপরের পদক্ষেপের একটি উদাহরণ রয়েছে:

function validateEmail(email) {
  var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[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,}))$/;
  return re.test(email);
}

function validate() {
  var $result = $("#result");
  var email = $("#email").val();
  $result.text("");

  if (validateEmail(email)) {
    $result.text(email + " is valid :)");
    $result.css("color", "green");
  } else {
    $result.text(email + " is not valid :(");
    $result.css("color", "red");
  }
  return false;
}

$("#validate").bind("click", validate);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form>
  <p>Enter an email address:</p>
  <input id='email'>
  <button type='submit' id='validate'>Validate!</button>
</form>

<h2 id='result'></h2>


একটি ইমেল বৈধতা 100% সঠিক পেতে কঠিন। এটি সঠিক করার একমাত্র আসল উপায় অ্যাকাউন্টে একটি পরীক্ষামূলক ইমেল পাঠাতে হবে। যে বলেন, কয়েক মৌলিক চেক আছে যা আপনি কিছু যুক্তিসঙ্গত পেয়েছেন তা নিশ্চিত করতে সহায়তা করতে পারে।

কিছু জিনিস উন্নত করা:

পরিবর্তে নতুন RegExp, শুধু regexpএই মত লেখার চেষ্টা করুন :

if (reg.test(/@/))

দ্বিতীয়ত, একটি নির্দিষ্ট সময় @চিহ্নের পরে আসে তা নিশ্চিত করতে এবং @এস এবং সময়সীমার মধ্যে অক্ষরগুলি নিশ্চিত করুন ।


এটি সঠিক RFC822 সংস্করণ।

function checkEmail(emailAddress) {
  var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
  var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
  var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
  var sQuotedPair = '\\x5c[\\x00-\\x7f]';
  var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
  var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
  var sDomain_ref = sAtom;
  var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
  var sWord = '(' + sAtom + '|' + sQuotedString + ')';
  var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
  var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
  var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
  var sValidEmail = '^' + sAddrSpec + '$'; // as whole string

  var reValidEmail = new RegExp(sValidEmail);

  return reValidEmail.test(emailAddress);
}

এটা কর:

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

কেন? এটি RFC 2822 এর উপর ভিত্তি করে , যা একটি স্ট্যান্ডার্ড সমস্ত ইমেল ঠিকানা মান্য করা আবশ্যক।

প্রায়ই ডেটাবেসে ইমেল ঠিকানা সংরক্ষণ করার সময় আমি তাদের ছোট হাতের অক্ষর তৈরি করি এবং, বাস্তবিকই, regexs সাধারণত চিহ্নিত করা যেতে পারে। এই ক্ষেত্রে এই সামান্য সংক্ষিপ্ত:

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

এখানে এটি জাভাস্ক্রিপ্টে ব্যবহার করা একটি উদাহরণ (শেষ পর্যন্ত i অসম্মানযুক্ত পতাকা সহ)।

var emailCheck=/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
console.log( emailCheck.test('[email protected]') );

নোট :
টেকনিক্যালি কিছু ইমেলগুলিতে উদ্ধৃতি চিহ্নের মধ্যে @ পাল্টা অক্ষরের সাথে @ প্রতীকের আগে বিভাগে উদ্ধৃতি অন্তর্ভুক্ত থাকতে পারে (তাই আপনার ইমেল ব্যবহারকারী আপত্তিজনক হতে পারে এবং @ এবং "..." মতো স্টাফ থাকতে পারে যতক্ষণ এটি উদ্ধৃতিতে লিখিত থাকে)। এই সবসময় না! এটা অপ্রচলিত। কিন্তু, এটি সত্যিকারের RFC 2822 মানের অন্তর্ভুক্ত এবং এখানে বাদ দেওয়া হয়েছে।

আরো তথ্য: http://www.regular-expressions.info/email.html


সমস্ত ইমেল ঠিকানা একটি 'এ' (অর্থাত্ @) প্রতীক থাকে। প্রয়োজনীয় শর্ত পরীক্ষা করুন:

email.indexOf("@") > 0

কিছু জটিল সঙ্গে বিরক্ত করবেন না। এমনকি যদি আপনি কোনও ইমেলটি RFC- সিনট্যাক্টিক্যাল বৈধ কিনা তা নির্ধারণ করতে পারলেও এটি সরবরাহকারী ব্যক্তির সাথে সম্পর্কিত কিনা তা আপনাকে জানাবে না। যে সত্যিই কি ব্যাপার।

যে পরীক্ষা, একটি বৈধতা বার্তা পাঠান।


বিরতি কোন অন্তর্নিহিত ক্ষমতা নেই forEach। মৃত্যুদণ্ড কার্যকর করার জন্য Array#someনিচের মত ব্যবহার করুন :

[1,2,3].some(function(number) {
    return number === 1;
});

এটি কাজ করে কারণ someকলব্যাকগুলি যত তাড়াতাড়ি সম্ভব ফেরত পাঠায়, অ্যারে ক্রমের মধ্যে মৃত্যুদন্ড কার্যকর করা হয়, সত্যকে ফেরত দেয়, বাকিগুলি কার্যকর করার স্বল্প-সার্কিট করে। আসল উত্তর some জন্য অ্যারে প্রোটোটাইপ দেখুনsome





javascript regex validation email email-validation